﻿<?xml version="1.0" encoding="UTF-8"?>
<Rights xmlns="http://v8.1c.ru/8.2/roles" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Rights" version="2.16">
	<setForNewObjects>false</setForNewObjects>
	<setForAttributesByDefault>true</setForAttributesByDefault>
	<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
	<object>
		<name>Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы</name>
		<right>
			<name>Read</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("ВладелецФайла")
#Иначе
#ПоЗначениямИНаборамРасширенный("Справочник.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы", "", "РасширенноеИЛИ",
"",
"",
"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Insert</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("ВладелецФайла")
#Иначе
#ПоЗначениямИНаборамРасширенный("Справочник.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы", "", "РасширенноеИЛИ",
"",
"",
"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Update</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("ВладелецФайла")
#Иначе
#ПоЗначениямИНаборамРасширенный("Справочник.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы", "", "РасширенноеИЛИ",
"",
"",
"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveInsert</name>
			<value>true</value>
		</right>
		<right>
			<name>Edit</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveSetDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveClearDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InputByString</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Catalog.ПапкиЭлектронныхПисем</name>
		<right>
			<name>Read</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоЗначениямРасширенный("Справочник.ПапкиЭлектронныхПисем", "", "",
"",
"",
"УчетныеЗаписиЭлектроннойПочты", "Т.Владелец", "ИЛИ(",
"Пользователи", "Т.Владелец.ВладелецУчетнойЗаписи", "И",
"Условие", "Т.Владелец.ВладелецУчетнойЗаписи &lt;&gt; Значение(Справочник.Пользователи.ПустаяСсылка)", ")",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Insert</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоЗначениямРасширенный("Справочник.ПапкиЭлектронныхПисем", "", "",
"",
"",
"УчетныеЗаписиЭлектроннойПочты", "Т.Владелец", "ИЛИ(",
"Пользователи", "Т.Владелец.ВладелецУчетнойЗаписи", "И",
"Условие", "Т.Владелец.ВладелецУчетнойЗаписи &lt;&gt; Значение(Справочник.Пользователи.ПустаяСсылка)", ")",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Update</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоЗначениямРасширенный("Справочник.ПапкиЭлектронныхПисем", "", "",
"",
"",
"УчетныеЗаписиЭлектроннойПочты", "Т.Владелец", "ИЛИ(",
"Пользователи", "Т.Владелец.ВладелецУчетнойЗаписи", "И",
"Условие", "Т.Владелец.ВладелецУчетнойЗаписи &lt;&gt; Значение(Справочник.Пользователи.ПустаяСсылка)", ")",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveInsert</name>
			<value>true</value>
		</right>
		<right>
			<name>Edit</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveSetDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveClearDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InputByString</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>InformationRegister.НепринятыеКОбработкеПочтовымСерверомИсходящиеПисьма</name>
		<right>
			<name>Read</name>
			<value>true</value>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>DocumentJournal.Взаимодействия.Command.НаписатьЭлектронноеПисьмоПоКонтакту</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>InformationRegister.НастройкиУчетныхЗаписейЭлектроннойПочты</name>
		<right>
			<name>Read</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляРегистра("ИдентификаторыОбъектовМетаданных.РегистрСведенийНастройкиУчетныхЗаписейЭлектроннойПочты", "УчетнаяЗаписьЭлектроннойПочты", "", "", "", "")
#Иначе
#ПоЗначениямРасширенный("РегистрСведений.НастройкиУчетныхЗаписейЭлектроннойПочты", "", "",
"",
"",
"УчетныеЗаписиЭлектроннойПочты", "Т.УчетнаяЗаписьЭлектроннойПочты", "ИЛИ(",
"Пользователи", "Т.УчетнаяЗаписьЭлектроннойПочты.ВладелецУчетнойЗаписи", "И",
"Условие", "Т.УчетнаяЗаписьЭлектроннойПочты.ВладелецУчетнойЗаписи &lt;&gt; Значение(Справочник.Пользователи.ПустаяСсылка)", ")",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Constant.ЗапретитьОтображениеНебезопасногоСодержимогоВПисьмах</name>
		<right>
			<name>Read</name>
			<value>true</value>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы</name>
		<right>
			<name>Read</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("ВладелецФайла")
#Иначе
#ПоЗначениямИНаборамРасширенный("Справочник.ЗапланированноеВзаимодействиеПрисоединенныеФайлы", "", "РасширенноеИЛИ",
"",
"",
"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Insert</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("ВладелецФайла")
#Иначе
#ПоЗначениямИНаборамРасширенный("Справочник.ЗапланированноеВзаимодействиеПрисоединенныеФайлы", "", "РасширенноеИЛИ",
"",
"",
"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Update</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("ВладелецФайла")
#Иначе
#ПоЗначениямИНаборамРасширенный("Справочник.ЗапланированноеВзаимодействиеПрисоединенныеФайлы", "", "РасширенноеИЛИ",
"",
"",
"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveInsert</name>
			<value>true</value>
		</right>
		<right>
			<name>Edit</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveSetDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveClearDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InputByString</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>DocumentJournal.Взаимодействия.Command.ПозвонитьПоПредмету</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>DocumentJournal.Взаимодействия.Command.ВзаимодействияПоПредмету</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>DocumentJournal.Взаимодействия.Command.ВзаимодействияПоКонтакту</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>InformationRegister.НастройкиУчетныхЗаписейЭлектроннойПочты.Command.ДополнительныеНастройки</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>DocumentJournal.Взаимодействия.Command.ЗапланироватьВзаимодействиеПоКонтакту</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Document.ТелефонныйЗвонок</name>
		<right>
			<name>Read</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоНаборамЗначений( "Документ.ТелефонныйЗвонок","","РасширенноеИЛИ","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Insert</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоНаборамЗначений( "Документ.ТелефонныйЗвонок","","РасширенноеИЛИ","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Update</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоНаборамЗначений( "Документ.ТелефонныйЗвонок","","РасширенноеИЛИ","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Posting</name>
			<value>true</value>
		</right>
		<right>
			<name>UndoPosting</name>
			<value>true</value>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveInsert</name>
			<value>true</value>
		</right>
		<right>
			<name>Edit</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveSetDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveClearDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractivePosting</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractivePostingRegular</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveUndoPosting</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveChangeOfPosted</name>
			<value>true</value>
		</right>
		<right>
			<name>InputByString</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>InformationRegister.СостоянияКонтактовВзаимодействий</name>
		<right>
			<name>Read</name>
			<value>true</value>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Document.ЭлектронноеПисьмоВходящее.Command.Переслать</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>DocumentJournal.Взаимодействия.Command.ЗапланироватьВзаимодействиеПоПредмету</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Catalog.ТелефонныйЗвонокПрисоединенныеФайлы</name>
		<right>
			<name>Read</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("ВладелецФайла")
#Иначе
#ПоЗначениямИНаборамРасширенный("Справочник.ТелефонныйЗвонокПрисоединенныеФайлы", "", "РасширенноеИЛИ",
"",
"",
"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Insert</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("ВладелецФайла")
#Иначе
#ПоЗначениямИНаборамРасширенный("Справочник.ТелефонныйЗвонокПрисоединенныеФайлы", "", "РасширенноеИЛИ",
"",
"",
"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Update</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("ВладелецФайла")
#Иначе
#ПоЗначениямИНаборамРасширенный("Справочник.ТелефонныйЗвонокПрисоединенныеФайлы", "", "РасширенноеИЛИ",
"",
"",
"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveInsert</name>
			<value>true</value>
		</right>
		<right>
			<name>Edit</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveSetDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveClearDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InputByString</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Document.ЗапланированноеВзаимодействие</name>
		<right>
			<name>Read</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоНаборамЗначений( "Документ.ЗапланированноеВзаимодействие","","РасширенноеИЛИ","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Insert</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоНаборамЗначений( "Документ.ЗапланированноеВзаимодействие","","РасширенноеИЛИ","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Update</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоНаборамЗначений( "Документ.ЗапланированноеВзаимодействие","","РасширенноеИЛИ","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Posting</name>
			<value>true</value>
		</right>
		<right>
			<name>UndoPosting</name>
			<value>true</value>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveInsert</name>
			<value>true</value>
		</right>
		<right>
			<name>Edit</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveSetDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveClearDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractivePosting</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractivePostingRegular</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveUndoPosting</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveChangeOfPosted</name>
			<value>true</value>
		</right>
		<right>
			<name>InputByString</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Document.Встреча</name>
		<right>
			<name>Read</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоНаборамЗначений( "Документ.Встреча","","РасширенноеИЛИ","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Insert</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоНаборамЗначений( "Документ.Встреча","","РасширенноеИЛИ","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Update</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоНаборамЗначений( "Документ.Встреча","","РасширенноеИЛИ","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Posting</name>
			<value>true</value>
		</right>
		<right>
			<name>UndoPosting</name>
			<value>true</value>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveInsert</name>
			<value>true</value>
		</right>
		<right>
			<name>Edit</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveSetDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveClearDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractivePosting</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractivePostingRegular</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveUndoPosting</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveChangeOfPosted</name>
			<value>true</value>
		</right>
		<right>
			<name>InputByString</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>InformationRegister.ПредметыПапкиВзаимодействий</name>
		<right>
			<name>Read</name>
			<value>true</value>
		</right>
		<right>
			<name>Update</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("Взаимодействие")
#Иначе
#ПоЗначениямИНаборамРасширенный( "РегистрСведений.ПредметыПапкиВзаимодействий","","РасширенноеИЛИ",
"",
"",
"Объект","Взаимодействие","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","" )
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
		<right>
			<name>Edit</name>
			<value>true</value>
		</right>
		<right>
			<name>TotalsControl</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Document.СообщениеSMS</name>
		<right>
			<name>Read</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоНаборамЗначений( "Документ.СообщениеSMS","","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Insert</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоНаборамЗначений( "Документ.СообщениеSMS","","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Update</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоНаборамЗначений( "Документ.СообщениеSMS","","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Posting</name>
			<value>true</value>
		</right>
		<right>
			<name>UndoPosting</name>
			<value>true</value>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveInsert</name>
			<value>true</value>
		</right>
		<right>
			<name>Edit</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveSetDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveClearDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractivePosting</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractivePostingRegular</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveUndoPosting</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveChangeOfPosted</name>
			<value>true</value>
		</right>
		<right>
			<name>InputByString</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>DocumentJournal.Взаимодействия.Command.ПечатьЭлектронногоПисьма</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>DocumentJournal.Взаимодействия.Command.НаписатьЭлектронноеПисьмоПоПредмету</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Catalog.СтроковыеКонтактыВзаимодействий</name>
		<right>
			<name>Read</name>
			<value>true</value>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
		<right>
			<name>InputByString</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы</name>
		<right>
			<name>Read</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("ВладелецФайла")
#Иначе
#ПоЗначениямИНаборамРасширенный("Справочник.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы", "", "РасширенноеИЛИ",
"",
"",
"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Insert</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("ВладелецФайла")
#Иначе
#ПоЗначениямИНаборамРасширенный("Справочник.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы", "", "РасширенноеИЛИ",
"",
"",
"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Update</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("ВладелецФайла")
#Иначе
#ПоЗначениямИНаборамРасширенный("Справочник.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы", "", "РасширенноеИЛИ",
"",
"",
"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveInsert</name>
			<value>true</value>
		</right>
		<right>
			<name>Edit</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveSetDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveClearDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InputByString</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>DocumentJournal.Взаимодействия</name>
		<right>
			<name>Read</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("Ссылка")
#Иначе
#ПоЗначениямИНаборамРасширенный( "ЖурналДокументов.Взаимодействия","","РасширенноеИЛИ",
"",
"",
"Объект","Т.Ссылка","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","" )
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Document.ЭлектронноеПисьмоВходящее.Command.Ответить</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Catalog.ЗакладкиВзаимодействий</name>
		<right>
			<name>Read</name>
			<value>true</value>
		</right>
		<right>
			<name>Insert</name>
			<value>true</value>
		</right>
		<right>
			<name>Update</name>
			<value>true</value>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveInsert</name>
			<value>true</value>
		</right>
		<right>
			<name>Edit</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveSetDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveClearDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InputByString</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>DocumentJournal.Взаимодействия.Command.СохранитьПисьмоНаДиск</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>InformationRegister.УведомленияОПрочтении</name>
		<right>
			<name>Read</name>
			<value>true</value>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Document.ЭлектронноеПисьмоИсходящее</name>
		<right>
			<name>Read</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоНаборамЗначений( "Документ.ЭлектронноеПисьмоИсходящее","","РасширенноеИЛИ","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Insert</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоНаборамЗначений( "Документ.ЭлектронноеПисьмоИсходящее","","РасширенноеИЛИ","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Update</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоНаборамЗначений( "Документ.ЭлектронноеПисьмоИсходящее","","РасширенноеИЛИ","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Posting</name>
			<value>true</value>
		</right>
		<right>
			<name>UndoPosting</name>
			<value>true</value>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveInsert</name>
			<value>true</value>
		</right>
		<right>
			<name>Edit</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveSetDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveClearDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractivePosting</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractivePostingRegular</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveUndoPosting</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveChangeOfPosted</name>
			<value>true</value>
		</right>
		<right>
			<name>InputByString</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>InformationRegister.СостоянияПапокПисем</name>
		<right>
			<name>Read</name>
			<value>true</value>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Configuration.БиблиотекаСтандартныхПодсистем</name>
		<right>
			<name>MainWindowModeNormal</name>
			<value>true</value>
		</right>
		<right>
			<name>MainWindowModeWorkplace</name>
			<value>true</value>
		</right>
		<right>
			<name>MainWindowModeEmbeddedWorkplace</name>
			<value>true</value>
		</right>
		<right>
			<name>MainWindowModeFullscreenWorkplace</name>
			<value>true</value>
		</right>
		<right>
			<name>MainWindowModeKiosk</name>
			<value>true</value>
		</right>
		<right>
			<name>AnalyticsSystemClient</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>InformationRegister.ДатыПоследнейЗагрузкиПочтовыхСообщений</name>
		<right>
			<name>Read</name>
			<value>true</value>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Catalog.СообщениеSMSПрисоединенныеФайлы</name>
		<right>
			<name>Read</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("ВладелецФайла")
#Иначе
#ПоЗначениямИНаборамРасширенный("Справочник.СообщениеSMSПрисоединенныеФайлы", "", "РасширенноеИЛИ",
"",
"",
"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Insert</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("ВладелецФайла")
#Иначе
#ПоЗначениямИНаборамРасширенный("Справочник.СообщениеSMSПрисоединенныеФайлы", "", "РасширенноеИЛИ",
"",
"",
"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Update</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("ВладелецФайла")
#Иначе
#ПоЗначениямИНаборамРасширенный("Справочник.СообщениеSMSПрисоединенныеФайлы", "", "РасширенноеИЛИ",
"",
"",
"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveInsert</name>
			<value>true</value>
		</right>
		<right>
			<name>Edit</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveSetDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveClearDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InputByString</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>DocumentJournal.Взаимодействия.Command.ЗапланироватьВстречуПоКонтакту</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>DocumentJournal.Взаимодействия.Command.ПозвонитьПоКонтакту</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Catalog.ВстречаПрисоединенныеФайлы</name>
		<right>
			<name>Read</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("ВладелецФайла")
#Иначе
#ПоЗначениямИНаборамРасширенный("Справочник.ВстречаПрисоединенныеФайлы", "", "РасширенноеИЛИ",
"",
"",
"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Insert</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("ВладелецФайла")
#Иначе
#ПоЗначениямИНаборамРасширенный("Справочник.ВстречаПрисоединенныеФайлы", "", "РасширенноеИЛИ",
"",
"",
"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Update</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("ВладелецФайла")
#Иначе
#ПоЗначениямИНаборамРасширенный("Справочник.ВстречаПрисоединенныеФайлы", "", "РасширенноеИЛИ",
"",
"",
"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveInsert</name>
			<value>true</value>
		</right>
		<right>
			<name>Edit</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveSetDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveClearDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InputByString</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Catalog.ПравилаОбработкиЭлектроннойПочты</name>
		<right>
			<name>Read</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоЗначениямРасширенный("Справочник.ПравилаОбработкиЭлектроннойПочты", "", "",
"",
"",
"УчетныеЗаписиЭлектроннойПочты", "Т.Владелец", "ИЛИ(",
"Пользователи", "Т.Владелец.ВладелецУчетнойЗаписи", "И",
"Условие", "Т.Владелец.ВладелецУчетнойЗаписи &lt;&gt; Значение(Справочник.Пользователи.ПустаяСсылка)", ")",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Insert</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоЗначениямРасширенный("Справочник.ПравилаОбработкиЭлектроннойПочты", "", "",
"",
"",
"УчетныеЗаписиЭлектроннойПочты", "Т.Владелец", "ИЛИ(",
"Пользователи", "Т.Владелец.ВладелецУчетнойЗаписи", "И",
"Условие", "Т.Владелец.ВладелецУчетнойЗаписи &lt;&gt; Значение(Справочник.Пользователи.ПустаяСсылка)", ")",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Update</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоЗначениямРасширенный("Справочник.ПравилаОбработкиЭлектроннойПочты", "", "",
"",
"",
"УчетныеЗаписиЭлектроннойПочты", "Т.Владелец", "ИЛИ(",
"Пользователи", "Т.Владелец.ВладелецУчетнойЗаписи", "И",
"Условие", "Т.Владелец.ВладелецУчетнойЗаписи &lt;&gt; Значение(Справочник.Пользователи.ПустаяСсылка)", ")",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveInsert</name>
			<value>true</value>
		</right>
		<right>
			<name>Edit</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveSetDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveClearDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InputByString</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>DocumentJournal.Взаимодействия.Command.НастройкиРаботыСПочтой</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>DocumentJournal.Взаимодействия.Command.НаписатьSMSПоКонтакту</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>InformationRegister.КонтактыВзаимодействий</name>
		<right>
			<name>Read</name>
			<value>true</value>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Document.ЭлектронноеПисьмоВходящее.Command.ОтветитьВсем</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>DocumentJournal.Взаимодействия.Command.ЗапланироватьВстречуПоПредмету</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>CommonForm.ВыборКонтакта</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>CommonForm.АдреснаяКнига</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Document.ЭлектронноеПисьмоВходящее</name>
		<right>
			<name>Read</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоНаборамЗначений( "Документ.ЭлектронноеПисьмоВходящее","","РасширенноеИЛИ","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Update</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоНаборамЗначений( "Документ.ЭлектронноеПисьмоВходящее","","РасширенноеИЛИ","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Posting</name>
			<value>true</value>
		</right>
		<right>
			<name>UndoPosting</name>
			<value>true</value>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
		<right>
			<name>Edit</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveSetDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveClearDeletionMark</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractivePosting</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractivePostingRegular</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveUndoPosting</name>
			<value>true</value>
		</right>
		<right>
			<name>InteractiveChangeOfPosted</name>
			<value>true</value>
		</right>
		<right>
			<name>InputByString</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>DocumentJournal.Взаимодействия.Command.НаписатьSMSПоПредмету</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>InformationRegister.СостоянияПредметовВзаимодействий</name>
		<right>
			<name>Read</name>
			<value>true</value>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Subsystem.СтандартныеПодсистемы.Subsystem.Взаимодействия</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>CommonForm.УточнениеКонтактов</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<restrictionTemplate>
		<name>ДляОбъекта(ПолеОбъекта)</name>
		<condition>// ДляОбъекта(ПолеОбъекта = "")
// Шаблон используется для ограничения элементов справочников, документов и
// других списков объектов по полю Ссылка, а также элементов зависимых списков
// объектов и записей регистров через поле объекта-владельца.
//
// Параметры:
//  ПолеОбъекта - имя поля, содержащего ссылку на объект, от которого зависит элемент списка.
//                Значение "" (по умолчанию) то же, что имя поля "Ссылка".
//

#Если &amp;СпискиСОтключеннымОграничениемЧтения = "Неопределено" #Тогда
  // Информационная база заблокирована для обновления.
  ГДЕ ЛОЖЬ

#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляОбъекта9,") #Тогда
  Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 9 шаблона ограничения доступа ДляОбъекта. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.

#ИначеЕсли &amp;СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
  // У пользователя отключены все виды доступа или
  // ограничение на уровне записей не используется.
  ГДЕ ИСТИНА

#ИначеЕсли СтрСодержит(&amp;СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы + ";") #Тогда
  // У пользователя отключено ограничение для текущей таблицы.
  ГДЕ ИСТИНА

#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ТребуетсяПерезапуститьСеанс,") #Тогда
  Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.

#ИначеЕсли #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" #Тогда
  // Проверка прав Добавление, Изменение, Удаление выполняется ПередЗаписью / ПриЗаписи.
  ГДЕ ИСТИНА

#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ";0") #Тогда
  ГДЕ ЛОЖЬ

#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ";1") #Тогда
  Ошибка: Внешние пользователи отключены.

#ИначеЕсли Не СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа,  #ИмяТекущейТаблицы + ":#ПолеОбъекта;")
         И Не СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":#ПолеОбъекта;") #Тогда

  Ошибка: Требуется актуализировать ограничение доступа по причине: Не удалось определить вариант ограничения доступа в параметрах сеанса для шаблона ДляОбъекта со значением параметра "#ПолеОбъекта". Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#Иначе

ТекущаяТаблица ГДЕ ИСТИНА В
 (
  ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
  ИЗ РегистрСведений.КлючиДоступаКОбъектам КАК КлючиДоступаКОбъектам
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":#ПолеОбъекта;") #Тогда
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаНаборовГруппДоступа КАК КлючиДоступаНаборовГруппДоступа
      ПО
      #Если &amp;ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
          КлючиДоступаНаборовГруппДоступа.КлючДоступа = КлючиДоступаКОбъектам.КлючДоступаПользователей
      #Иначе
          КлючиДоступаНаборовГруппДоступа.КлючДоступа = КлючиДоступаКОбъектам.КлючДоступаВнешнихПользователей
      #КонецЕсли
        И КлючиДоступаНаборовГруппДоступа.НаборГруппДоступа = &amp;РазрешенныйНаборГруппДоступа
  #КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":#ПолеОбъекта;*") #Тогда
      
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаНаборовГруппДоступа КАК КлючиДоступаРазрешенногоНабораГруппДоступа
      ПО
      #Если &amp;ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
          КлючиДоступаРазрешенногоНабораГруппДоступа.КлючДоступа = КлючиДоступаКОбъектам.КлючДоступаПользователей
      #Иначе
          КлючиДоступаРазрешенногоНабораГруппДоступа.КлючДоступа = КлючиДоступаКОбъектам.КлючДоступаВнешнихПользователей
      #КонецЕсли
        И КлючиДоступаРазрешенногоНабораГруппДоступа.НаборГруппДоступа = &amp;РазрешенныйПустойНаборГруппДоступа
  #КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":#ПолеОбъекта;") #Тогда
      
    #Если &amp;ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаПользователей КАК КлючиДоступаПользователей
      ПО
          КлючиДоступаПользователей.КлючДоступа = КлючиДоступаКОбъектам.КлючДоступаПользователей
        И КлючиДоступаПользователей.Пользователь = &amp;РазрешенныйПользователь
    #Иначе
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаВнешнихПользователей КАК КлючиДоступаПользователей
      ПО
          КлючиДоступаПользователей.КлючДоступа = КлючиДоступаКОбъектам.КлючДоступаВнешнихПользователей
        И КлючиДоступаПользователей.ВнешнийПользователь = &amp;РазрешенныйПользователь
    #КонецЕсли
  #КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":#ПолеОбъекта;+") #Тогда
      
    #Если &amp;ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаПользователей КАК КлючиДоступаНаборовГруппПользователей
      ПО
          КлючиДоступаНаборовГруппПользователей.КлючДоступа = КлючиДоступаКОбъектам.КлючДоступаПользователей
        И КлючиДоступаНаборовГруппПользователей.Пользователь = &amp;РазрешенныйНаборГруппПользователей
    #Иначе
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаВнешнихПользователей КАК КлючиДоступаНаборовГруппПользователей
      ПО
          КлючиДоступаНаборовГруппПользователей.КлючДоступа = КлючиДоступаКОбъектам.КлючДоступаВнешнихПользователей
        И КлючиДоступаНаборовГруппПользователей.ВнешнийПользователь = &amp;РазрешенныйНаборГруппПользователей
    #КонецЕсли
  #КонецЕсли
  ГДЕ
  #Если "#ПолеОбъекта"  = ""
    Или СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа,  #ИмяТекущейТаблицы + ":#ПолеОбъекта;;-")
    Или СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа,  #ИмяТекущейТаблицы + ":#ПолеОбъекта;*;-")
    Или СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":#ПолеОбъекта;;-")
    Или СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":#ПолеОбъекта;+;-") #Тогда
      КлючиДоступаКОбъектам.Объект = ТекущаяТаблица.Ссылка
  #Иначе
      КлючиДоступаКОбъектам.Объект = ТекущаяТаблица.#ПолеОбъекта
  #КонецЕсли
    И (
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":#ПолеОбъекта;") #Тогда
          НЕ КлючиДоступаНаборовГруппДоступа.КлючДоступа ЕСТЬ NULL
  #Иначе
          ЛОЖЬ
  #КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":#ПолеОбъекта;*") #Тогда
      ИЛИ НЕ КлючиДоступаРазрешенногоНабораГруппДоступа.КлючДоступа ЕСТЬ NULL
  #КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":#ПолеОбъекта;") #Тогда
      ИЛИ НЕ КлючиДоступаПользователей.КлючДоступа ЕСТЬ NULL
  #КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":#ПолеОбъекта;+") #Тогда
      ИЛИ НЕ КлючиДоступаНаборовГруппПользователей.КлючДоступа ЕСТЬ NULL
  #КонецЕсли
      )
 )

 #Если Не СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, #ИмяТекущейТаблицы + ":Пропустить;")
   И (    СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";УточнитьДляВсех;")
      Или СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, #ИмяТекущейТаблицы + ":Уточнить;") ) #Тогда
  
  #Если Не СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":#ПолеОбъекта;") #Тогда
  И ИСТИНА В (ИСТИНА
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";31;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";30;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";29;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";28;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";27;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";26;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";25;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";24;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";23;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";22;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";21;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";20;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";19;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";18;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";17;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";16;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";15;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";14;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";13;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";12;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";11;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";10;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";09;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";08;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";07;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";06;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";05;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";04;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";03;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";02;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";01;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";00;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	)
  #Иначе
  И ИСТИНА В (ИСТИНА
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";31^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";30^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";29^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";28^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";27^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";26^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";25^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";24^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";23^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";22^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";21^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";20^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";19^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";18^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";17^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";16^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";15^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";14^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";13^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";12^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";11^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";10^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";09^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";08^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";07^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";06^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";05^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";04^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";03^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";02^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";01^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";00^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	)
  #КонецЕсли
 #КонецЕсли

#КонецЕсли</condition>
	</restrictionTemplate>
	<restrictionTemplate>
		<name>ДляРегистра(Регистр, Поле1, Поле2, Поле3, Поле4, Поле5)</name>
		<condition>// ДляРегистра(Регистр, Поле1, Поле2 = "", Поле3 = "", Поле4 = "", Поле5 = "")
// Шаблон используется для ограничения групп записей регистров.
//
// Параметры:
//  Регистр - имя предопределенного элемента справочника Идентификаторы объектов метаданных или справочника
//            Идентификаторы объектов расширений в формате: имя справочника с точкой и полное имя таблицы
//            без точки, например, ИдентификаторыОбъектовМетаданных.РегистрНакопленияОстаткиНаСкладах;
//          - имя отдельного регистра ключей в формате КлючиДоступаКРегистру&lt;ОстатокИмени&gt;,
//            например, КлючиДоступаКРегиструОстаткиНаСкладах.
//  Поле1   - имя первого поля (измерения, ресурса, реквизита), которое будет соединяться с полем Поле1
//            регистра сведений КлючиДоступаКРегистр*
//  Поле2   - аналогично предыдущему параметру, если используется в ограничении доступа к регистру.
//  ...
//  Поле5   - аналогично предыдущему параметру, если используется в ограничении доступа к регистру.

#Если &amp;СпискиСОтключеннымОграничениемЧтения = "Неопределено" #Тогда
  // Информационная база заблокирована для обновления.
  ГДЕ ЛОЖЬ

#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра9,") #Тогда
  Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 9 шаблона ограничения доступа ДляРегистра. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.

#ИначеЕсли &amp;СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
  // У пользователя отключены все виды доступа или
  // ограничение на уровне записей не используется.
  ГДЕ ИСТИНА

#ИначеЕсли СтрСодержит(&amp;СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы + ";") #Тогда
  // У пользователя отключено ограничение для текущей таблицы.
  ГДЕ ИСТИНА

#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ТребуетсяПерезапуститьСеанс,") #Тогда
  Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.

#ИначеЕсли #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" #Тогда
  // Проверка прав Добавление, Изменение, Удаление выполняется ПередЗаписью / ПриЗаписи.
  ГДЕ ИСТИНА

#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ";0") #Тогда
  ГДЕ ЛОЖЬ

#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ";1") #Тогда
  Ошибка: Внешние пользователи отключены.

#ИначеЕсли Не СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа,  #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;")
         И Не СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда

  Ошибка: Требуется актуализировать ограничение доступа по причине: Не удалось определить вариант ограничения доступа в параметрах сеанса для шаблона ДляРегистра со значениями параметров "#Регистр", "#Поле1", "#Поле2", "#Поле3", "#Поле4", "#Поле5". Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#Иначе

ТекущаяТаблица ГДЕ ИСТИНА В
 (
  ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
#Если Не СтрСодержит("#Регистр", "КлючиДоступаКРегистру") #Тогда
  ИЗ РегистрСведений.КлючиДоступаКРегистрам КАК КлючиДоступаКРегистрам
#Иначе
  ИЗ РегистрСведений.#Регистр КАК КлючиДоступаКРегистрам
#КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа,  #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаНаборовГруппДоступа КАК КлючиДоступаНаборовГруппДоступа
      ПО
          КлючиДоступаНаборовГруппДоступа.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
        И КлючиДоступаНаборовГруппДоступа.НаборГруппДоступа = &amp;РазрешенныйНаборГруппДоступа
  #КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа,  #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;*") #Тогда
      
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаНаборовГруппДоступа КАК КлючиДоступаРазрешенногоНабораГруппДоступа
      ПО
          КлючиДоступаРазрешенногоНабораГруппДоступа.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
        И КлючиДоступаРазрешенногоНабораГруппДоступа.НаборГруппДоступа = &amp;РазрешенныйПустойНаборГруппДоступа
  #КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
      
    #Если &amp;ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаПользователей КАК КлючиДоступаПользователей
      ПО
          КлючиДоступаПользователей.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
        И КлючиДоступаПользователей.Пользователь = &amp;РазрешенныйПользователь
    #Иначе
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаВнешнихПользователей КАК КлючиДоступаПользователей
      ПО
          КлючиДоступаПользователей.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
        И КлючиДоступаПользователей.ВнешнийПользователь = &amp;РазрешенныйПользователь
    #КонецЕсли
  #КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;+") #Тогда
      
    #Если &amp;ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаПользователей КАК КлючиДоступаНаборовГруппПользователей
      ПО
          КлючиДоступаНаборовГруппПользователей.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
        И КлючиДоступаНаборовГруппПользователей.Пользователь = &amp;РазрешенныйНаборГруппПользователей
    #Иначе
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаВнешнихПользователей КАК КлючиДоступаНаборовГруппПользователей
      ПО
          КлючиДоступаНаборовГруппПользователей.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
        И КлючиДоступаНаборовГруппПользователей.ВнешнийПользователь = &amp;РазрешенныйНаборГруппПользователей
    #КонецЕсли
  #КонецЕсли
  ГДЕ
  #Если Не СтрСодержит("#Регистр", "КлючиДоступаКРегистру") #Тогда
      КлючиДоступаКРегистрам.Регистр = Значение(Справочник.#Регистр)
  #Иначе
      ИСТИНА
  #КонецЕсли
    И
  (
      КлючиДоступаКРегистрам.ВариантДоступа =
    (
  #Если &amp;ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда 0 #Иначе 1 #КонецЕсли
  #Если Не СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Версия1=0") #Тогда
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле3=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле4=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле5=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия1Бит0=1")      #Тогда +  64 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия1Бит1=1")      #Тогда + 128 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия1Бит2=1")      #Тогда + 256 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия1Бит3=1")      #Тогда + 512 #КонецЕсли
  #КонецЕсли
    )
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле1;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле1
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле2;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле2
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле2;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле3=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле3=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле3=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле4=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле4=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле5=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
  #КонецЕсли
 
 #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2") #Тогда
 
  ИЛИ
      КлючиДоступаКРегистрам.ВариантДоступа =
    (
  #Если &amp;ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда 0 #Иначе 1 #КонецЕсли
  #Если Не СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Версия2=0") #Тогда
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле3=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле4=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле5=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия2Бит0=1")      #Тогда +  64 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия2Бит1=1")      #Тогда + 128 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия2Бит2=1")      #Тогда + 256 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия2Бит3=1")      #Тогда + 512 #КонецЕсли
  #КонецЕсли
    )
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле1;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле1
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле2;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле2
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле2;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле3=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле3=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле3=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле4=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле4=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле5=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
  #КонецЕсли
 
 #КонецЕсли
 #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3") #Тогда
 
  ИЛИ
      КлючиДоступаКРегистрам.ВариантДоступа =
    (
  #Если &amp;ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда 0 #Иначе 1 #КонецЕсли
  #Если Не СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Версия3=0") #Тогда
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле3=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле4=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле5=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия3Бит0=1")      #Тогда +  64 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия3Бит1=1")      #Тогда + 128 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия3Бит2=1")      #Тогда + 256 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия3Бит3=1")      #Тогда + 512 #КонецЕсли
  #КонецЕсли
    )
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле1;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле1
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле2;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле2
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле2;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле3=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле3=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле3=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле4=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле4=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле5=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
  #КонецЕсли
 
 #КонецЕсли
  )
    И (
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
          НЕ КлючиДоступаНаборовГруппДоступа.КлючДоступа ЕСТЬ NULL
  #Иначе
          ЛОЖЬ
  #КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;*") #Тогда
      ИЛИ НЕ КлючиДоступаРазрешенногоНабораГруппДоступа.КлючДоступа ЕСТЬ NULL
  #КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
      ИЛИ НЕ КлючиДоступаПользователей.КлючДоступа ЕСТЬ NULL
  #КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;+") #Тогда
      ИЛИ НЕ КлючиДоступаНаборовГруппПользователей.КлючДоступа ЕСТЬ NULL
  #КонецЕсли
      )
 )

 #Если Не СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, #ИмяТекущейТаблицы + ":Пропустить;")
   И (    СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";УточнитьДляВсех;")
      Или СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, #ИмяТекущейТаблицы + ":Уточнить;") ) #Тогда
  
  #Если Не СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
  И ИСТИНА В (ИСТИНА
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";31;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";30;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";29;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";28;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";27;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";26;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";25;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";24;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";23;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";22;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";21;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";20;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";19;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";18;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";17;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";16;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";15;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";14;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";13;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";12;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";11;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";10;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";09;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";08;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";07;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";06;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";05;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";04;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";03;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";02;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";01;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";00;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	)
  #Иначе
  И ИСТИНА В (ИСТИНА
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";31^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";30^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";29^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";28^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";27^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";26^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";25^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";24^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";23^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";22^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";21^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";20^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";19^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";18^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";17^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";16^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";15^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";14^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";13^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";12^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";11^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";10^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";09^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";08^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";07^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";06^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";05^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";04^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";03^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";02^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";01^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";00^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	)
  #КонецЕсли
 #КонецЕсли

#КонецЕсли</condition>
	</restrictionTemplate>
	<restrictionTemplate>
		<name>ПоЗначениямИНаборамРасширенный</name>
		<condition>// ПоЗначениямИНаборамРасширенный(Таблица, -, Модификатор, ПрисоединяемыеТаблицы, О, В1,П1,О1, В2,П2,О2,..., В(n), П(n), О(n)).
// № параметра:                         1, 2,           3,                     4, 5,  6, 7, 8,  9,10,11,...,3+n*3,4+n*3,5+n*3.
// Читается так: "ограничение доступа по значениям и наборам расширенный".
// Параметры:
//     Таблица   - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг".
//     Модификатор - изменяет шаблон.
//                 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает
//                  безусловно выбирать группы иерархического справочника.
//                 2-й модификатор - строка "РасширенноеИЛИ" указывает для ограничений,
//                  например, "ПоОрганизациям или ПоУчетнымЗаписям" делать расширенную
//                  проверку, при которой вариант настройки вида доступа в группах доступа
//                  "Все разрешены, без запрещенных" считается, как "Вид доступа не используется".
//                  Если этого модификатора нет, тогда результат проверки Истина, что приводит
//                  к итоговому результату Истина, если "Все разрешены, без запрещенных"
//                  хотя бы по одному из видов доступа (либо ПоОрганизациям, либо ПоУчетнымЗаписям).
//                  Модификатор имеет смысл только при проверке наборов значений доступа.
//                  Можно использовать комбинации модификаторов: "НеОграничиватьДоступКГруппам",
//                  "РасширенноеИЛИ", "НеОграничиватьДоступКГруппам,РасширенноеИЛИ".
//                 Других модификаторов в этой версии шаблона не предусмотрено.
//     ПрисоединяемыеТаблицы - текст присоедиения дополнительных таблиц на языке запросов, например,
//                 "ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет.ОплатаПоставщикам КАК Т1
//                  ПО Т.Ссылка = Т1.Ссылка".
//                 Присоединение позволяет указать поля таблицы ОплатаПоставщикам, как поля основной таблицы
//                  для проверки их значений, как значений основной таблицы.
//                 Следует помнить, что при размножении строк в результате соединения, достаточно чтобы
//                  всего одна строка прошла условия проверки, т.е. результаты проверки строк объединяются по "ИЛИ".
//     О         - Начальные скобки "(".
//     В(n)      - Вид доступа - имя вида доступа, например, "Организации". Для полей составного типа, с целью повышения
//                  производительности, лучше указать несколько имен, например, "Организации,ГруппыФизическихЛиц",
//                  чем использовать несколько блоков параметров, с одним и тем же именем поля.
//                  Специальные виды доступа "Объект", "Условие", "НастройкиПрав", "ПравоЧтения", "ПравоИзменения",
//                  "ПравоЧтенияПоИдентификатору", "ПравоИзмененияПоИдентификатору" можно использовать только отдельно.
//                 Когда В(n) = "Условие" (или ""), Тогда П(n) содержит строку условия на языке запросов, например
//                   "Т.Автор = &amp;АвторизованныйПользователь",
//                   "ТИПЗНАЧЕНИЯ(Т.Владелец) = ТИП(Справочник.Организации)", где Т - псевдоним текущей таблицы.
//                 Когда В(n) = "ПравоЧтения" Или "ПравоИзменения",
//                  выполняется проверка наличия права на таблицу значения Т.П(n).
//                 Когда В(n) = "ПравоЧтенияПоИдентификатору" или "ПравоИзмененияПоИдентификатору",
//                  выполняется проверка наличия права на таблицу по идентификатору в значении Т.П(n).
//                 Когда В(n) = "Объект" (или " "), то
//                   когда есть запись зависимости прав в регистре сведений ЗависимостиПравДоступа тогда
//                     выполняется проверка права чтения Т.П(n) и наборов значений доступа
//                     в регистре сведений НаборыЗначенийДоступа, считываемых по ссылке Т.П(n) для права чтения;
//                   иначе используется стандартное правило:
//                     когда Право = "Чтение" тогда выполняется проверка права чтения Т.П(n) и наборов значений доступа
//                       в регистре сведений НаборыЗначенийДоступа, считываемых по ссылке Т.П(n) для права чтения;
//                     когда Право = "Изменение" тогда выполняется проверка права изменения Т.П(n)
//                       и наборов значений доступа, считываемых по ссылке Т.П(n) для права изменения.
//     П(n)     - Поле проверяемого значения с псевдонимом, например "Т.Организация",
//                кроме случая В(n) = "Условие" (или "").
//     О(n)      - Логические операции "И", "ИЛИ" в сочетании с скобками "(", ")".
//  Примечение: максимальное количество одновременно проверяемых значений полей можно увеличить, изменив шаблон, но
// необходимо будет указывать все параметры шаблона, т.е. указывать пустые строки, когда количество полей меньше максимального.
//  Шаблон имеет структуру:
//     &lt;Соединение по таблице1&gt;  &lt;Соединение по таблице2&gt;  ... &lt;Соединение по таблице(m)&gt;
//     &lt;Общая часть условий&gt; &lt;Условие по группе параметров 1&gt; И/ИЛИ &lt;Условие по группе параметров 1&gt; И/ИЛИ ... &lt;Условие по группе параметров(n)&gt;
//  Пример:
//      ПоЗначениямИНаборамРасширенный("ЖурналДокументов.СкладскиеДокументы", "", "",
//      "",
//      "",
//      "Объект","Т.Ссылка","И",
//      "Объект","Т.ОсновнойДокумент","", "","","", ...)

#Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется = "" #Тогда // Информационная база заблокирована для обновления.
    ГДЕ ЛОЖЬ

#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ПоЗначениямИНаборамРасширенный18,") #Тогда
    Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 18 шаблона ограничения доступа ПоЗначениямИНаборамРасширенный. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.

#Иначе

// Проверка правильности параметра Право.
#Если Не ("#Параметр(2)" = "Чтение"    Или "#Параметр(2)" = "Добавление" Или
          "#Параметр(2)" = "Изменение" Или "#Параметр(2)" = "Удаление"   Или "#Параметр(2)" = "")
      Или #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" И "#Параметр(2)"  = "Чтение"
      Или #ИмяТекущегоПраваДоступа  = "Чтение" И "#Параметр(2)" &lt;&gt; "Чтение" И "#Параметр(2)" &lt;&gt; "" #Тогда
    // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
    НеверноеПраво: #Параметр(2)
#КонецЕсли

// Проверка правильности параметра ИмяТаблицы.
#Если "#Параметр(1)" &lt;&gt; #ИмяТекущейТаблицы #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	НеверноеИмяТекущейТаблицы: "#Параметр(1)"
#КонецЕсли

// Проверка правильности параметра Модификатор.
#Если Не (    "#Параметр(3)" = "НеОграничиватьДоступКГруппам"
          Или "#Параметр(3)" = "РасширенноеИЛИ"
          Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ"
          Или "#Параметр(3)" = "") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	НеверныйМодификатор: #Параметр(3)
#КонецЕсли

// Общая проверка использования ограничений доступа на уровне записей и
// проверка использования хотя бы одного ограничения из указанных видов доступа.
#Если Не
     (  Истина
      И ("#Параметр(6)" = "" И "#Параметр(7)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(6),"))
      И ("#Параметр(9)" = "" И "#Параметр(10)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(9),"))
      И ("#Параметр(12)" = "" И "#Параметр(13)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(12),"))
      И ("#Параметр(15)" = "" И "#Параметр(16)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(15),"))
      И ("#Параметр(18)" = "" И "#Параметр(19)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(18),"))
      И ("#Параметр(21)" = "" И "#Параметр(22)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(21),"))
      И ("#Параметр(24)" = "" И "#Параметр(25)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(24),"))
      И ("#Параметр(27)" = "" И "#Параметр(28)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(27),"))
      И ("#Параметр(30)" = "" И "#Параметр(31)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(30),"))
      И ("#Параметр(33)" = "" И "#Параметр(34)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(33),"))
      И ("#Параметр(36)" = "" И "#Параметр(37)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(36),"))
      И ("#Параметр(39)" = "" И "#Параметр(40)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(39),"))
      И ("#Параметр(42)" = "" И "#Параметр(43)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(42),"))
      И ("#Параметр(45)" = "" И "#Параметр(46)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(45),"))
      И ("#Параметр(48)" = "" И "#Параметр(49)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(48),"))
      И ("#Параметр(51)" = "" И "#Параметр(52)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(51),"))
     ) #Тогда

Т ИЗ Т // Т - псевдоним текущей таблицы (выбран коротким, чтобы сократить количество символов в тексте параметра-условия на языке запросов).

// Присоединяемые таблицы к проверяемой строке текущей таблицы "Т".
#Параметр(4)

ГДЕ

ИСТИНА В
(	// Проверка права пользователя на текущую таблицу в целом.
	// Права на таблицы формируются по составу ролей профиля группы доступа.
	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
	ИЗ
	#Если СтрСодержит(&amp;ТаблицыРасширенийСОграничениемДоступа, "|#Параметр(1);") #Тогда
		Справочник.ИдентификаторыОбъектовРасширений КАК СвойстваТекущейТаблицы
	#Иначе
		Справочник.ИдентификаторыОбъектовМетаданных КАК СвойстваТекущейТаблицы
	#КонецЕсли
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа КАК ГруппыДоступа
		ПО
			  СвойстваТекущейТаблицы.ПолноеИмя = "#Параметр(1)"
			И ИСТИНА В
			  (
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ
					РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступа
					ГДЕ
						  ТаблицыГруппДоступа.Таблица       = СвойстваТекущейТаблицы.Ссылка
						И ТаблицыГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка
					#Если #ИмяТекущегоПраваДоступа = "Изменение" #Тогда
						И ТаблицыГруппДоступа.ПравоИзменение
					#ИначеЕсли #ИмяТекущегоПраваДоступа = "Добавление" #Тогда
						И ТаблицыГруппДоступа.ПравоДобавление
					#КонецЕсли
			  )
			И ГруппыДоступа.Ссылка В
			  (
				ВЫБРАТЬ
					ГруппыДоступаПользователи.Ссылка КАК ГруппаДоступа
				ИЗ
					Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
					ПО
						  СоставыГруппПользователей.Пользователь = &amp;АвторизованныйПользователь
						И СоставыГруппПользователей.ГруппаПользователей = ГруппыДоступаПользователи.Пользователь
			  )
	ГДЕ

// Безусловная выборка групп в иерархическом объекте метаданных (если нужно).
#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
	Т.ЭтоГруппа ИЛИ
#КонецЕсли

  ( // Поиск значений заданных полей в разрешенных значениях групп доступа (пользователей).

	#Параметр(5)  // [([(][(]...] 0-n открывающихся скобок.

//// Проверка значения поля группы параметров 1.
#Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(6)" = "Условие" Или "#Параметр(6)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	( #Параметр(7) )
#ИначеЕсли "#Параметр(6)" = "ПравоЧтения" Или "#Параметр(6)" = "ПравоИзменения" #Тогда
	  #Параметр(7) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(7))
		#Если Не "#Параметр(6)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(6)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(6)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(7)
		#Если Не "#Параметр(6)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(6)" = "Объект" Или "#Параметр(6)" = " " #Тогда
	(
		// Проверка права объекта ведущей таблицы (зависимость по правам)
		(
			ИСТИНА В
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваОбъекта
			ГДЕ
				  ТаблицыГруппДоступаПроверкаПраваОбъекта.ГруппаДоступа = ГруппыДоступа.Ссылка
				И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПраваОбъекта.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(7))
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Проверка ведущего права для права Чтение
				// Право Чтение может зависеть только от права Чтение
			#Иначе
				// Проверка ведущего права для права Изменение
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И НЕ
				(	  ТаблицыГруппДоступаПроверкаПраваОбъекта.ПравоИзменение = ЛОЖЬ
					И НЕ ИСТИНА В
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
					ГДЕ
						  ЗависимостиПравДоступа.ПодчиненнаяТаблица = СвойстваТекущейТаблицы.Ссылка
						И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(7))
					)
				)
			#КонецЕсли
			)
		)
  #Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
		// Проверка ограничения права объекта ведущей таблицы
		И 
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		ВЫБОР КОГДА ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(7))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
			ИЛИ ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(7))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
		ТОГДА
			(
				ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(7)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
				И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(7)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
			)
		ИНАЧЕ
	#КонецЕсли
	#Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
		НЕ
		 (
		  ИСТИНА В // Не все проверки отключены.
		  (
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора с не отключенной проверкой.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
				ГДЕ
					  НомераНаборов.Объект = #Параметр(7)
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					// Право Чтение может зависеть только от права Чтение
					И НомераНаборов.Чтение = ИСТИНА
				#Иначе
					// Право Изменение может зависеть от ведущих прав Чтение, Изменение
					И ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
							ГДЕ
								  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
								И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(7))
							)
						ТОГДА НомераНаборов.Чтение
						ИНАЧЕ НомераНаборов.Изменение
					  КОНЕЦ
				#КонецЕсли
					И
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(7)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
		  ) И НЕ
	#Иначе
		 (
	#КонецЕсли
		  ИСТИНА В
		  (
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора по которому доступ разрешен.
			ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
				  НомераНаборов.Объект = #Параметр(7)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				И НомераНаборов.Чтение = ИСТИНА
			#Иначе
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
						ГДЕ
							  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
							И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(7))
						)
					ТОГДА НомераНаборов.Чтение
					ИНАЧЕ НомераНаборов.Изменение
				  КОНЕЦ
			#КонецЕсли
				И
			  #Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(7)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
				И
			  #КонецЕсли
				  НЕ ЛОЖЬ В // Все проверки успешны.
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ // Выбор первого не разрешенного значения доступа.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
				ГДЕ
					  НаборыЗначений.Объект      = #Параметр(7)
					И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
					И НЕ
				ВЫБОР
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
			  #Если НЕ &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				КОГДА НаборыЗначений.ЗначениеБезГрупп
				ТОГДА
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
						ГДЕ
							  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
							И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
					=
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
						      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
			  #КонецЕсли
				КОГДА НаборыЗначений.СтандартноеЗначение
			#Иначе
				КОГДА
					ИСТИНА В
					(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
							ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
					)
			#КонецЕсли
			#Если &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				ТОГДА
					ИСТИНА
			#Иначе
				ТОГДА
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ВЫБОР
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					КОГДА
						НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
						И НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
					ТОГДА
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
							ГДЕ
								  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#КонецЕсли
				#Если Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОГДА
						ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
							ГДЕ
								  ГруппыЗначенийДоступа.ЗначениеДоступа       = НаборыЗначений.ЗначениеДоступа
								И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
							)
					ТОГДА
						ИСТИНА
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ИНАЧЕ
				#КонецЕсли
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
								ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
							ПО
								  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
								И ГруппыЗначений.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОНЕЦ
				#КонецЕсли
			#КонецЕсли
				// Проверка заведомого ложного или истинного однострочного набора значений.
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен)
				ТОГДА ИСТИНА
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен)
				ТОГДА ЛОЖЬ
				// Проверка права доступа пользователя к таблице ЗначенияДоступа.
				КОГДА ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
				  ИЛИ ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
					)
			#Иначе
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
							И НЕ(НаборыЗначений.Уточнение &lt;&gt; ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
									И ТаблицыГруппДоступаПроверкаПраваНаОбъект.ПравоИзменение = ЛОЖЬ)
					)
			#КонецЕсли
			#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
				ИНАЧЕ
					(
					ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					)
			#Иначе
				ИНАЧЕ
					ЛОЖЬ
			#КонецЕсли
				КОНЕЦ
				) // НЕ ЛОЖЬ В
		  )
		 )
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		КОНЕЦ
	#КонецЕсли
  #КонецЕсли
	)

#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(6)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(7)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(7)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(6),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(6)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(6)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(6)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(6),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(7), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(6),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(6),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(7)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(6),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(7)
		#ИначеЕсли "#Параметр(7)" = "Т.Ссылка"
		         И "#Параметр(6)" &lt;&gt; "Пользователи"
		         И "#Параметр(6)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(6)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(6)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(6),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(7)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(7)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(7))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )

#Иначе
	ЕСТЬNULL(#Параметр(7), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(8)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 2.
#Если "#Параметр(9)" = "" И "#Параметр(10)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(9)" = "Условие" Или "#Параметр(9)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(10) )
#ИначеЕсли "#Параметр(9)" = "ПравоЧтения" Или "#Параметр(9)" = "ПравоИзменения" #Тогда
	 #Параметр(10) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(10))
		#Если Не "#Параметр(9)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(9)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(9)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(10)
		#Если Не "#Параметр(9)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(9)" = "Объект" Или "#Параметр(9)" = " " #Тогда
	(
		// Проверка права объекта ведущей таблицы (зависимость по правам)
		(
			ИСТИНА В
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваОбъекта
			ГДЕ
				  ТаблицыГруппДоступаПроверкаПраваОбъекта.ГруппаДоступа = ГруппыДоступа.Ссылка
				И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПраваОбъекта.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(10))
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Проверка ведущего права для права Чтение
				// Право Чтение может зависеть только от права Чтение
			#Иначе
				// Проверка ведущего права для права Изменение
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И НЕ
				(	  ТаблицыГруппДоступаПроверкаПраваОбъекта.ПравоИзменение = ЛОЖЬ
					И НЕ ИСТИНА В
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
					ГДЕ
						  ЗависимостиПравДоступа.ПодчиненнаяТаблица = СвойстваТекущейТаблицы.Ссылка
						И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(10))
					)
				)
			#КонецЕсли
			)
		)
  #Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
		// Проверка ограничения права объекта ведущей таблицы
		И 
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		ВЫБОР КОГДА ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(10))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
			ИЛИ ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(10))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
		ТОГДА
			(
				ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(10)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
				И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(10)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
			)
		ИНАЧЕ
	#КонецЕсли
	#Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
		НЕ
		 (
		  ИСТИНА В // Не все проверки отключены.
		  (
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора с не отключенной проверкой.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
				ГДЕ
					  НомераНаборов.Объект = #Параметр(10)
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					// Право Чтение может зависеть только от права Чтение
					И НомераНаборов.Чтение = ИСТИНА
				#Иначе
					// Право Изменение может зависеть от ведущих прав Чтение, Изменение
					И ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
							ГДЕ
								  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
								И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(10))
							)
						ТОГДА НомераНаборов.Чтение
						ИНАЧЕ НомераНаборов.Изменение
					  КОНЕЦ
				#КонецЕсли
					И
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(10)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
		  ) И НЕ
	#Иначе
		 (
	#КонецЕсли
		  ИСТИНА В
		  (
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора по которому доступ разрешен.
			ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
				  НомераНаборов.Объект = #Параметр(10)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				И НомераНаборов.Чтение = ИСТИНА
			#Иначе
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
						ГДЕ
							  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
							И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(10))
						)
					ТОГДА НомераНаборов.Чтение
					ИНАЧЕ НомераНаборов.Изменение
				  КОНЕЦ
			#КонецЕсли
				И
			  #Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(10)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
				И
			  #КонецЕсли
				  НЕ ЛОЖЬ В // Все проверки успешны.
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ // Выбор первого не разрешенного значения доступа.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
				ГДЕ
					  НаборыЗначений.Объект      = #Параметр(10)
					И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
					И НЕ
				ВЫБОР
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
			  #Если НЕ &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				КОГДА НаборыЗначений.ЗначениеБезГрупп
				ТОГДА
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
						ГДЕ
							  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
							И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
					=
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
						      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
			  #КонецЕсли
				КОГДА НаборыЗначений.СтандартноеЗначение
			#Иначе
				КОГДА
					ИСТИНА В
					(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
							ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
					)
			#КонецЕсли
			#Если &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				ТОГДА
					ИСТИНА
			#Иначе
				ТОГДА
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ВЫБОР
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					КОГДА
						НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
						И НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
					ТОГДА
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
							ГДЕ
								  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#КонецЕсли
				#Если Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОГДА
						ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
							ГДЕ
								  ГруппыЗначенийДоступа.ЗначениеДоступа       = НаборыЗначений.ЗначениеДоступа
								И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
							)
					ТОГДА
						ИСТИНА
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ИНАЧЕ
				#КонецЕсли
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
								ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
							ПО
								  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
								И ГруппыЗначений.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОНЕЦ
				#КонецЕсли
			#КонецЕсли
				// Проверка заведомого ложного или истинного однострочного набора значений.
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен)
				ТОГДА ИСТИНА
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен)
				ТОГДА ЛОЖЬ
				// Проверка права доступа пользователя к таблице ЗначенияДоступа.
				КОГДА ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
				  ИЛИ ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
					)
			#Иначе
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
							И НЕ(НаборыЗначений.Уточнение &lt;&gt; ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
									И ТаблицыГруппДоступаПроверкаПраваНаОбъект.ПравоИзменение = ЛОЖЬ)
					)
			#КонецЕсли
			#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
				ИНАЧЕ
					(
					ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					)
			#Иначе
				ИНАЧЕ
					ЛОЖЬ
			#КонецЕсли
				КОНЕЦ
				) // НЕ ЛОЖЬ В
		  )
		 )
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		КОНЕЦ
	#КонецЕсли
  #КонецЕсли
	)

#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(9)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(10)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(10)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(9),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(9)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(9)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(9)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(9),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(10), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(9),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(9),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(10)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(9),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(10)
		#ИначеЕсли "#Параметр(10)" = "Т.Ссылка"
		         И "#Параметр(9)" &lt;&gt; "Пользователи"
		         И "#Параметр(9)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(9)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(9)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(9),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(10)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(10)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(10))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )

#Иначе
	ЕСТЬNULL(#Параметр(10), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(11)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 3.
#Если "#Параметр(12)" = "" И "#Параметр(13)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(12)" = "Условие" Или "#Параметр(12)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(13) )
#ИначеЕсли "#Параметр(12)" = "ПравоЧтения" Или "#Параметр(12)" = "ПравоИзменения" #Тогда
	 #Параметр(13) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(13))
		#Если Не "#Параметр(12)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(12)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(12)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(13)
		#Если Не "#Параметр(12)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(12)" = "Объект" Или "#Параметр(12)" = " " #Тогда
	(
		// Проверка права объекта ведущей таблицы (зависимость по правам)
		(
			ИСТИНА В
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваОбъекта
			ГДЕ
				  ТаблицыГруппДоступаПроверкаПраваОбъекта.ГруппаДоступа = ГруппыДоступа.Ссылка
				И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПраваОбъекта.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(13))
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Проверка ведущего права для права Чтение
				// Право Чтение может зависеть только от права Чтение
			#Иначе
				// Проверка ведущего права для права Изменение
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И НЕ
				(	  ТаблицыГруппДоступаПроверкаПраваОбъекта.ПравоИзменение = ЛОЖЬ
					И НЕ ИСТИНА В
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
					ГДЕ
						  ЗависимостиПравДоступа.ПодчиненнаяТаблица = СвойстваТекущейТаблицы.Ссылка
						И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(13))
					)
				)
			#КонецЕсли
			)
		)
  #Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
		// Проверка ограничения права объекта ведущей таблицы
		И 
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		ВЫБОР КОГДА ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(13))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
			ИЛИ ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(13))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
		ТОГДА
			(
				ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(13)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
				И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(13)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
			)
		ИНАЧЕ
	#КонецЕсли
	#Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
		НЕ
		 (
		  ИСТИНА В // Не все проверки отключены.
		  (
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора с не отключенной проверкой.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
				ГДЕ
					  НомераНаборов.Объект = #Параметр(13)
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					// Право Чтение может зависеть только от права Чтение
					И НомераНаборов.Чтение = ИСТИНА
				#Иначе
					// Право Изменение может зависеть от ведущих прав Чтение, Изменение
					И ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
							ГДЕ
								  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
								И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(13))
							)
						ТОГДА НомераНаборов.Чтение
						ИНАЧЕ НомераНаборов.Изменение
					  КОНЕЦ
				#КонецЕсли
					И
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(13)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
		  ) И НЕ
	#Иначе
		 (
	#КонецЕсли
		  ИСТИНА В
		  (
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора по которому доступ разрешен.
			ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
				  НомераНаборов.Объект = #Параметр(13)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				И НомераНаборов.Чтение = ИСТИНА
			#Иначе
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
						ГДЕ
							  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
							И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(13))
						)
					ТОГДА НомераНаборов.Чтение
					ИНАЧЕ НомераНаборов.Изменение
				  КОНЕЦ
			#КонецЕсли
				И
			  #Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(13)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
				И
			  #КонецЕсли
				  НЕ ЛОЖЬ В // Все проверки успешны.
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ // Выбор первого не разрешенного значения доступа.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
				ГДЕ
					  НаборыЗначений.Объект      = #Параметр(13)
					И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
					И НЕ
				ВЫБОР
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
			  #Если НЕ &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				КОГДА НаборыЗначений.ЗначениеБезГрупп
				ТОГДА
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
						ГДЕ
							  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
							И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
					=
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
						      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
			  #КонецЕсли
				КОГДА НаборыЗначений.СтандартноеЗначение
			#Иначе
				КОГДА
					ИСТИНА В
					(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
							ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
					)
			#КонецЕсли
			#Если &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				ТОГДА
					ИСТИНА
			#Иначе
				ТОГДА
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ВЫБОР
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					КОГДА
						НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
						И НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
					ТОГДА
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
							ГДЕ
								  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#КонецЕсли
				#Если Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОГДА
						ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
							ГДЕ
								  ГруппыЗначенийДоступа.ЗначениеДоступа       = НаборыЗначений.ЗначениеДоступа
								И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
							)
					ТОГДА
						ИСТИНА
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ИНАЧЕ
				#КонецЕсли
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
								ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
							ПО
								  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
								И ГруппыЗначений.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОНЕЦ
				#КонецЕсли
			#КонецЕсли
				// Проверка заведомого ложного или истинного однострочного набора значений.
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен)
				ТОГДА ИСТИНА
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен)
				ТОГДА ЛОЖЬ
				// Проверка права доступа пользователя к таблице ЗначенияДоступа.
				КОГДА ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
				  ИЛИ ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
					)
			#Иначе
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
							И НЕ(НаборыЗначений.Уточнение &lt;&gt; ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
									И ТаблицыГруппДоступаПроверкаПраваНаОбъект.ПравоИзменение = ЛОЖЬ)
					)
			#КонецЕсли
			#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
				ИНАЧЕ
					(
					ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					)
			#Иначе
				ИНАЧЕ
					ЛОЖЬ
			#КонецЕсли
				КОНЕЦ
				) // НЕ ЛОЖЬ В
		  )
		 )
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		КОНЕЦ
	#КонецЕсли
  #КонецЕсли
	)

#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(12)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(13)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(13)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(12),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(12)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(12)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(12)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(12),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(13), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(12),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(12),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(13)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(12),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(13)
		#ИначеЕсли "#Параметр(13)" = "Т.Ссылка"
		         И "#Параметр(12)" &lt;&gt; "Пользователи"
		         И "#Параметр(12)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(12)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(12)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(12),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(13)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(13)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(13))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )

#Иначе
	ЕСТЬNULL(#Параметр(13), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(14)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 4.
#Если "#Параметр(15)" = "" И "#Параметр(16)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(15)" = "Условие" Или "#Параметр(15)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(16) )
#ИначеЕсли "#Параметр(15)" = "ПравоЧтения" Или "#Параметр(15)" = "ПравоИзменения" #Тогда
	 #Параметр(16) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(16))
		#Если Не "#Параметр(15)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(15)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(15)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(16)
		#Если Не "#Параметр(15)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(15)" = "Объект" Или "#Параметр(15)" = " " #Тогда
	(
		// Проверка права объекта ведущей таблицы (зависимость по правам)
		(
			ИСТИНА В
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваОбъекта
			ГДЕ
				  ТаблицыГруппДоступаПроверкаПраваОбъекта.ГруппаДоступа = ГруппыДоступа.Ссылка
				И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПраваОбъекта.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(16))
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Проверка ведущего права для права Чтение
				// Право Чтение может зависеть только от права Чтение
			#Иначе
				// Проверка ведущего права для права Изменение
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И НЕ
				(	  ТаблицыГруппДоступаПроверкаПраваОбъекта.ПравоИзменение = ЛОЖЬ
					И НЕ ИСТИНА В
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
					ГДЕ
						  ЗависимостиПравДоступа.ПодчиненнаяТаблица = СвойстваТекущейТаблицы.Ссылка
						И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(16))
					)
				)
			#КонецЕсли
			)
		)
  #Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
		// Проверка ограничения права объекта ведущей таблицы
		И 
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		ВЫБОР КОГДА ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(16))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
			ИЛИ ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(16))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
		ТОГДА
			(
				ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(16)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
				И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(16)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
			)
		ИНАЧЕ
	#КонецЕсли
	#Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
		НЕ
		 (
		  ИСТИНА В // Не все проверки отключены.
		  (
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора с не отключенной проверкой.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
				ГДЕ
					  НомераНаборов.Объект = #Параметр(16)
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					// Право Чтение может зависеть только от права Чтение
					И НомераНаборов.Чтение = ИСТИНА
				#Иначе
					// Право Изменение может зависеть от ведущих прав Чтение, Изменение
					И ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
							ГДЕ
								  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
								И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(16))
							)
						ТОГДА НомераНаборов.Чтение
						ИНАЧЕ НомераНаборов.Изменение
					  КОНЕЦ
				#КонецЕсли
					И
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(16)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
		  ) И НЕ
	#Иначе
		 (
	#КонецЕсли
		  ИСТИНА В
		  (
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора по которому доступ разрешен.
			ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
				  НомераНаборов.Объект = #Параметр(16)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				И НомераНаборов.Чтение = ИСТИНА
			#Иначе
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
						ГДЕ
							  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
							И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(16))
						)
					ТОГДА НомераНаборов.Чтение
					ИНАЧЕ НомераНаборов.Изменение
				  КОНЕЦ
			#КонецЕсли
				И
			  #Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(16)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
				И
			  #КонецЕсли
				  НЕ ЛОЖЬ В // Все проверки успешны.
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ // Выбор первого не разрешенного значения доступа.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
				ГДЕ
					  НаборыЗначений.Объект      = #Параметр(16)
					И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
					И НЕ
				ВЫБОР
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
			  #Если НЕ &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				КОГДА НаборыЗначений.ЗначениеБезГрупп
				ТОГДА
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
						ГДЕ
							  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
							И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
					=
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
						      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
			  #КонецЕсли
				КОГДА НаборыЗначений.СтандартноеЗначение
			#Иначе
				КОГДА
					ИСТИНА В
					(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
							ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
					)
			#КонецЕсли
			#Если &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				ТОГДА
					ИСТИНА
			#Иначе
				ТОГДА
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ВЫБОР
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					КОГДА
						НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
						И НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
					ТОГДА
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
							ГДЕ
								  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#КонецЕсли
				#Если Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОГДА
						ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
							ГДЕ
								  ГруппыЗначенийДоступа.ЗначениеДоступа       = НаборыЗначений.ЗначениеДоступа
								И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
							)
					ТОГДА
						ИСТИНА
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ИНАЧЕ
				#КонецЕсли
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
								ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
							ПО
								  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
								И ГруппыЗначений.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОНЕЦ
				#КонецЕсли
			#КонецЕсли
				// Проверка заведомого ложного или истинного однострочного набора значений.
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен)
				ТОГДА ИСТИНА
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен)
				ТОГДА ЛОЖЬ
				// Проверка права доступа пользователя к таблице ЗначенияДоступа.
				КОГДА ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
				  ИЛИ ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
					)
			#Иначе
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
							И НЕ(НаборыЗначений.Уточнение &lt;&gt; ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
									И ТаблицыГруппДоступаПроверкаПраваНаОбъект.ПравоИзменение = ЛОЖЬ)
					)
			#КонецЕсли
			#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
				ИНАЧЕ
					(
					ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					)
			#Иначе
				ИНАЧЕ
					ЛОЖЬ
			#КонецЕсли
				КОНЕЦ
				) // НЕ ЛОЖЬ В
		  )
		 )
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		КОНЕЦ
	#КонецЕсли
  #КонецЕсли
	)

#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(15)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(16)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(16)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(15),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(15)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(15)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(15)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(15),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(16), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(15),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(15),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(16)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(15),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(16)
		#ИначеЕсли "#Параметр(16)" = "Т.Ссылка"
		         И "#Параметр(15)" &lt;&gt; "Пользователи"
		         И "#Параметр(15)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(15)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(15)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(15),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(16)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(16)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(16))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )

#Иначе
	ЕСТЬNULL(#Параметр(16), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(17)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 5.
#Если "#Параметр(18)" = "" И "#Параметр(19)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(18)" = "Условие" Или "#Параметр(18)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(19) )
#ИначеЕсли "#Параметр(18)" = "ПравоЧтения" Или "#Параметр(18)" = "ПравоИзменения" #Тогда
	 #Параметр(19) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(19))
		#Если Не "#Параметр(18)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(18)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(18)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(19)
		#Если Не "#Параметр(18)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(18)" = "Объект" Или "#Параметр(18)" = " " #Тогда
	(
		// Проверка права объекта ведущей таблицы (зависимость по правам)
		(
			ИСТИНА В
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваОбъекта
			ГДЕ
				  ТаблицыГруппДоступаПроверкаПраваОбъекта.ГруппаДоступа = ГруппыДоступа.Ссылка
				И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПраваОбъекта.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(19))
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Проверка ведущего права для права Чтение
				// Право Чтение может зависеть только от права Чтение
			#Иначе
				// Проверка ведущего права для права Изменение
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И НЕ
				(	  ТаблицыГруппДоступаПроверкаПраваОбъекта.ПравоИзменение = ЛОЖЬ
					И НЕ ИСТИНА В
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
					ГДЕ
						  ЗависимостиПравДоступа.ПодчиненнаяТаблица = СвойстваТекущейТаблицы.Ссылка
						И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(19))
					)
				)
			#КонецЕсли
			)
		)
  #Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
		// Проверка ограничения права объекта ведущей таблицы
		И 
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		ВЫБОР КОГДА ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(19))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
			ИЛИ ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(19))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
		ТОГДА
			(
				ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(19)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
				И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(19)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
			)
		ИНАЧЕ
	#КонецЕсли
	#Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
		НЕ
		 (
		  ИСТИНА В // Не все проверки отключены.
		  (
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора с не отключенной проверкой.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
				ГДЕ
					  НомераНаборов.Объект = #Параметр(19)
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					// Право Чтение может зависеть только от права Чтение
					И НомераНаборов.Чтение = ИСТИНА
				#Иначе
					// Право Изменение может зависеть от ведущих прав Чтение, Изменение
					И ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
							ГДЕ
								  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
								И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(19))
							)
						ТОГДА НомераНаборов.Чтение
						ИНАЧЕ НомераНаборов.Изменение
					  КОНЕЦ
				#КонецЕсли
					И
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(19)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
		  ) И НЕ
	#Иначе
		 (
	#КонецЕсли
		  ИСТИНА В
		  (
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора по которому доступ разрешен.
			ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
				  НомераНаборов.Объект = #Параметр(19)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				И НомераНаборов.Чтение = ИСТИНА
			#Иначе
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
						ГДЕ
							  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
							И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(19))
						)
					ТОГДА НомераНаборов.Чтение
					ИНАЧЕ НомераНаборов.Изменение
				  КОНЕЦ
			#КонецЕсли
				И
			  #Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(19)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
				И
			  #КонецЕсли
				  НЕ ЛОЖЬ В // Все проверки успешны.
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ // Выбор первого не разрешенного значения доступа.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
				ГДЕ
					  НаборыЗначений.Объект      = #Параметр(19)
					И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
					И НЕ
				ВЫБОР
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
			  #Если НЕ &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				КОГДА НаборыЗначений.ЗначениеБезГрупп
				ТОГДА
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
						ГДЕ
							  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
							И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
					=
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
						      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
			  #КонецЕсли
				КОГДА НаборыЗначений.СтандартноеЗначение
			#Иначе
				КОГДА
					ИСТИНА В
					(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
							ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
					)
			#КонецЕсли
			#Если &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				ТОГДА
					ИСТИНА
			#Иначе
				ТОГДА
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ВЫБОР
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					КОГДА
						НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
						И НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
					ТОГДА
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
							ГДЕ
								  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#КонецЕсли
				#Если Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОГДА
						ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
							ГДЕ
								  ГруппыЗначенийДоступа.ЗначениеДоступа       = НаборыЗначений.ЗначениеДоступа
								И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
							)
					ТОГДА
						ИСТИНА
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ИНАЧЕ
				#КонецЕсли
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
								ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
							ПО
								  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
								И ГруппыЗначений.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОНЕЦ
				#КонецЕсли
			#КонецЕсли
				// Проверка заведомого ложного или истинного однострочного набора значений.
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен)
				ТОГДА ИСТИНА
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен)
				ТОГДА ЛОЖЬ
				// Проверка права доступа пользователя к таблице ЗначенияДоступа.
				КОГДА ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
				  ИЛИ ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
					)
			#Иначе
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
							И НЕ(НаборыЗначений.Уточнение &lt;&gt; ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
									И ТаблицыГруппДоступаПроверкаПраваНаОбъект.ПравоИзменение = ЛОЖЬ)
					)
			#КонецЕсли
			#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
				ИНАЧЕ
					(
					ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					)
			#Иначе
				ИНАЧЕ
					ЛОЖЬ
			#КонецЕсли
				КОНЕЦ
				) // НЕ ЛОЖЬ В
		  )
		 )
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		КОНЕЦ
	#КонецЕсли
  #КонецЕсли
	)

#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(18)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(19)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(19)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(18),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(18)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(18)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(18)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(18),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(19), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(18),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(18),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(19)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(18),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(19)
		#ИначеЕсли "#Параметр(19)" = "Т.Ссылка"
		         И "#Параметр(18)" &lt;&gt; "Пользователи"
		         И "#Параметр(18)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(18)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(18)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(18),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(19)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(19)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(19))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )

#Иначе
	ЕСТЬNULL(#Параметр(19), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(20)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 6.
#Если "#Параметр(21)" = "" И "#Параметр(22)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(21)" = "Условие" Или "#Параметр(21)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(22) )
#ИначеЕсли "#Параметр(21)" = "ПравоЧтения" Или "#Параметр(21)" = "ПравоИзменения" #Тогда
	 #Параметр(22) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(22))
		#Если Не "#Параметр(21)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(21)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(21)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(22)
		#Если Не "#Параметр(21)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(21)" = "Объект" Или "#Параметр(21)" = " " #Тогда
	(
		// Проверка права объекта ведущей таблицы (зависимость по правам)
		(
			ИСТИНА В
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваОбъекта
			ГДЕ
				  ТаблицыГруппДоступаПроверкаПраваОбъекта.ГруппаДоступа = ГруппыДоступа.Ссылка
				И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПраваОбъекта.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(22))
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Проверка ведущего права для права Чтение
				// Право Чтение может зависеть только от права Чтение
			#Иначе
				// Проверка ведущего права для права Изменение
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И НЕ
				(	  ТаблицыГруппДоступаПроверкаПраваОбъекта.ПравоИзменение = ЛОЖЬ
					И НЕ ИСТИНА В
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
					ГДЕ
						  ЗависимостиПравДоступа.ПодчиненнаяТаблица = СвойстваТекущейТаблицы.Ссылка
						И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(22))
					)
				)
			#КонецЕсли
			)
		)
  #Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
		// Проверка ограничения права объекта ведущей таблицы
		И 
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		ВЫБОР КОГДА ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(22))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
			ИЛИ ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(22))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
		ТОГДА
			(
				ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(22)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
				И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(22)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
			)
		ИНАЧЕ
	#КонецЕсли
	#Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
		НЕ
		 (
		  ИСТИНА В // Не все проверки отключены.
		  (
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора с не отключенной проверкой.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
				ГДЕ
					  НомераНаборов.Объект = #Параметр(22)
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					// Право Чтение может зависеть только от права Чтение
					И НомераНаборов.Чтение = ИСТИНА
				#Иначе
					// Право Изменение может зависеть от ведущих прав Чтение, Изменение
					И ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
							ГДЕ
								  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
								И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(22))
							)
						ТОГДА НомераНаборов.Чтение
						ИНАЧЕ НомераНаборов.Изменение
					  КОНЕЦ
				#КонецЕсли
					И
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(22)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
		  ) И НЕ
	#Иначе
		 (
	#КонецЕсли
		  ИСТИНА В
		  (
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора по которому доступ разрешен.
			ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
				  НомераНаборов.Объект = #Параметр(22)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				И НомераНаборов.Чтение = ИСТИНА
			#Иначе
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
						ГДЕ
							  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
							И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(22))
						)
					ТОГДА НомераНаборов.Чтение
					ИНАЧЕ НомераНаборов.Изменение
				  КОНЕЦ
			#КонецЕсли
				И
			  #Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(22)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
				И
			  #КонецЕсли
				  НЕ ЛОЖЬ В // Все проверки успешны.
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ // Выбор первого не разрешенного значения доступа.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
				ГДЕ
					  НаборыЗначений.Объект      = #Параметр(22)
					И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
					И НЕ
				ВЫБОР
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
			  #Если НЕ &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				КОГДА НаборыЗначений.ЗначениеБезГрупп
				ТОГДА
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
						ГДЕ
							  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
							И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
					=
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
						      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
			  #КонецЕсли
				КОГДА НаборыЗначений.СтандартноеЗначение
			#Иначе
				КОГДА
					ИСТИНА В
					(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
							ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
					)
			#КонецЕсли
			#Если &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				ТОГДА
					ИСТИНА
			#Иначе
				ТОГДА
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ВЫБОР
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					КОГДА
						НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
						И НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
					ТОГДА
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
							ГДЕ
								  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#КонецЕсли
				#Если Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОГДА
						ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
							ГДЕ
								  ГруппыЗначенийДоступа.ЗначениеДоступа       = НаборыЗначений.ЗначениеДоступа
								И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
							)
					ТОГДА
						ИСТИНА
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ИНАЧЕ
				#КонецЕсли
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
								ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
							ПО
								  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
								И ГруппыЗначений.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОНЕЦ
				#КонецЕсли
			#КонецЕсли
				// Проверка заведомого ложного или истинного однострочного набора значений.
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен)
				ТОГДА ИСТИНА
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен)
				ТОГДА ЛОЖЬ
				// Проверка права доступа пользователя к таблице ЗначенияДоступа.
				КОГДА ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
				  ИЛИ ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
					)
			#Иначе
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
							И НЕ(НаборыЗначений.Уточнение &lt;&gt; ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
									И ТаблицыГруппДоступаПроверкаПраваНаОбъект.ПравоИзменение = ЛОЖЬ)
					)
			#КонецЕсли
			#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
				ИНАЧЕ
					(
					ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					)
			#Иначе
				ИНАЧЕ
					ЛОЖЬ
			#КонецЕсли
				КОНЕЦ
				) // НЕ ЛОЖЬ В
		  )
		 )
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		КОНЕЦ
	#КонецЕсли
  #КонецЕсли
	)

#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(21)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(22)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(22)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(21),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(21)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(21)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(21)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(21),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(22), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(21),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(21),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(22)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(21),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(22)
		#ИначеЕсли "#Параметр(22)" = "Т.Ссылка"
		         И "#Параметр(21)" &lt;&gt; "Пользователи"
		         И "#Параметр(21)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(21)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(21)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(21),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(22)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(22)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(22))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )

#Иначе
	ЕСТЬNULL(#Параметр(22), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(23)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 7.
#Если "#Параметр(24)" = "" И "#Параметр(25)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(24)" = "Условие" Или "#Параметр(24)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(25) )
#ИначеЕсли "#Параметр(24)" = "ПравоЧтения" Или "#Параметр(24)" = "ПравоИзменения" #Тогда
	 #Параметр(25) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(25))
		#Если Не "#Параметр(24)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(24)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(24)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(25)
		#Если Не "#Параметр(24)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(24)" = "Объект" Или "#Параметр(24)" = " " #Тогда
	(
		// Проверка права объекта ведущей таблицы (зависимость по правам)
		(
			ИСТИНА В
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваОбъекта
			ГДЕ
				  ТаблицыГруппДоступаПроверкаПраваОбъекта.ГруппаДоступа = ГруппыДоступа.Ссылка
				И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПраваОбъекта.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(25))
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Проверка ведущего права для права Чтение
				// Право Чтение может зависеть только от права Чтение
			#Иначе
				// Проверка ведущего права для права Изменение
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И НЕ
				(	  ТаблицыГруппДоступаПроверкаПраваОбъекта.ПравоИзменение = ЛОЖЬ
					И НЕ ИСТИНА В
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
					ГДЕ
						  ЗависимостиПравДоступа.ПодчиненнаяТаблица = СвойстваТекущейТаблицы.Ссылка
						И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(25))
					)
				)
			#КонецЕсли
			)
		)
  #Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
		// Проверка ограничения права объекта ведущей таблицы
		И 
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		ВЫБОР КОГДА ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(25))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
			ИЛИ ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(25))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
		ТОГДА
			(
				ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(25)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
				И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(25)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
			)
		ИНАЧЕ
	#КонецЕсли
	#Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
		НЕ
		 (
		  ИСТИНА В // Не все проверки отключены.
		  (
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора с не отключенной проверкой.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
				ГДЕ
					  НомераНаборов.Объект = #Параметр(25)
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					// Право Чтение может зависеть только от права Чтение
					И НомераНаборов.Чтение = ИСТИНА
				#Иначе
					// Право Изменение может зависеть от ведущих прав Чтение, Изменение
					И ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
							ГДЕ
								  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
								И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(25))
							)
						ТОГДА НомераНаборов.Чтение
						ИНАЧЕ НомераНаборов.Изменение
					  КОНЕЦ
				#КонецЕсли
					И
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(25)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
		  ) И НЕ
	#Иначе
		 (
	#КонецЕсли
		  ИСТИНА В
		  (
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора по которому доступ разрешен.
			ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
				  НомераНаборов.Объект = #Параметр(25)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				И НомераНаборов.Чтение = ИСТИНА
			#Иначе
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
						ГДЕ
							  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
							И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(25))
						)
					ТОГДА НомераНаборов.Чтение
					ИНАЧЕ НомераНаборов.Изменение
				  КОНЕЦ
			#КонецЕсли
				И
			  #Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(25)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
				И
			  #КонецЕсли
				  НЕ ЛОЖЬ В // Все проверки успешны.
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ // Выбор первого не разрешенного значения доступа.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
				ГДЕ
					  НаборыЗначений.Объект      = #Параметр(25)
					И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
					И НЕ
				ВЫБОР
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
			  #Если НЕ &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				КОГДА НаборыЗначений.ЗначениеБезГрупп
				ТОГДА
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
						ГДЕ
							  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
							И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
					=
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
						      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
			  #КонецЕсли
				КОГДА НаборыЗначений.СтандартноеЗначение
			#Иначе
				КОГДА
					ИСТИНА В
					(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
							ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
					)
			#КонецЕсли
			#Если &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				ТОГДА
					ИСТИНА
			#Иначе
				ТОГДА
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ВЫБОР
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					КОГДА
						НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
						И НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
					ТОГДА
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
							ГДЕ
								  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#КонецЕсли
				#Если Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОГДА
						ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
							ГДЕ
								  ГруппыЗначенийДоступа.ЗначениеДоступа       = НаборыЗначений.ЗначениеДоступа
								И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
							)
					ТОГДА
						ИСТИНА
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ИНАЧЕ
				#КонецЕсли
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
								ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
							ПО
								  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
								И ГруппыЗначений.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОНЕЦ
				#КонецЕсли
			#КонецЕсли
				// Проверка заведомого ложного или истинного однострочного набора значений.
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен)
				ТОГДА ИСТИНА
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен)
				ТОГДА ЛОЖЬ
				// Проверка права доступа пользователя к таблице ЗначенияДоступа.
				КОГДА ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
				  ИЛИ ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
					)
			#Иначе
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
							И НЕ(НаборыЗначений.Уточнение &lt;&gt; ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
									И ТаблицыГруппДоступаПроверкаПраваНаОбъект.ПравоИзменение = ЛОЖЬ)
					)
			#КонецЕсли
			#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
				ИНАЧЕ
					(
					ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					)
			#Иначе
				ИНАЧЕ
					ЛОЖЬ
			#КонецЕсли
				КОНЕЦ
				) // НЕ ЛОЖЬ В
		  )
		 )
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		КОНЕЦ
	#КонецЕсли
  #КонецЕсли
	)

#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(24)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(25)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(25)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(24),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(24)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(24)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(24)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(24),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(25), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(24),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(24),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(25)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(24),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(25)
		#ИначеЕсли "#Параметр(25)" = "Т.Ссылка"
		         И "#Параметр(24)" &lt;&gt; "Пользователи"
		         И "#Параметр(24)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(24)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(24)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(24),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(25)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(25)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(25))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )

#Иначе
	ЕСТЬNULL(#Параметр(25), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(26)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 8.
#Если "#Параметр(27)" = "" И "#Параметр(28)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(27)" = "Условие" Или "#Параметр(27)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(28) )
#ИначеЕсли "#Параметр(27)" = "ПравоЧтения" Или "#Параметр(27)" = "ПравоИзменения" #Тогда
	 #Параметр(28) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(28))
		#Если Не "#Параметр(27)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(27)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(27)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(28)
		#Если Не "#Параметр(27)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(27)" = "Объект" Или "#Параметр(27)" = " " #Тогда
	(
		// Проверка права объекта ведущей таблицы (зависимость по правам)
		(
			ИСТИНА В
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваОбъекта
			ГДЕ
				  ТаблицыГруппДоступаПроверкаПраваОбъекта.ГруппаДоступа = ГруппыДоступа.Ссылка
				И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПраваОбъекта.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(28))
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Проверка ведущего права для права Чтение
				// Право Чтение может зависеть только от права Чтение
			#Иначе
				// Проверка ведущего права для права Изменение
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И НЕ
				(	  ТаблицыГруппДоступаПроверкаПраваОбъекта.ПравоИзменение = ЛОЖЬ
					И НЕ ИСТИНА В
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
					ГДЕ
						  ЗависимостиПравДоступа.ПодчиненнаяТаблица = СвойстваТекущейТаблицы.Ссылка
						И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(28))
					)
				)
			#КонецЕсли
			)
		)
  #Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
		// Проверка ограничения права объекта ведущей таблицы
		И 
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		ВЫБОР КОГДА ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(28))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
			ИЛИ ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(28))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
		ТОГДА
			(
				ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(28)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
				И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(28)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
			)
		ИНАЧЕ
	#КонецЕсли
	#Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
		НЕ
		 (
		  ИСТИНА В // Не все проверки отключены.
		  (
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора с не отключенной проверкой.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
				ГДЕ
					  НомераНаборов.Объект = #Параметр(28)
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					// Право Чтение может зависеть только от права Чтение
					И НомераНаборов.Чтение = ИСТИНА
				#Иначе
					// Право Изменение может зависеть от ведущих прав Чтение, Изменение
					И ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
							ГДЕ
								  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
								И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(28))
							)
						ТОГДА НомераНаборов.Чтение
						ИНАЧЕ НомераНаборов.Изменение
					  КОНЕЦ
				#КонецЕсли
					И
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(28)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
		  ) И НЕ
	#Иначе
		 (
	#КонецЕсли
		  ИСТИНА В
		  (
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора по которому доступ разрешен.
			ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
				  НомераНаборов.Объект = #Параметр(28)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				И НомераНаборов.Чтение = ИСТИНА
			#Иначе
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
						ГДЕ
							  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
							И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(28))
						)
					ТОГДА НомераНаборов.Чтение
					ИНАЧЕ НомераНаборов.Изменение
				  КОНЕЦ
			#КонецЕсли
				И
			  #Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(28)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
				И
			  #КонецЕсли
				  НЕ ЛОЖЬ В // Все проверки успешны.
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ // Выбор первого не разрешенного значения доступа.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
				ГДЕ
					  НаборыЗначений.Объект      = #Параметр(28)
					И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
					И НЕ
				ВЫБОР
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
			  #Если НЕ &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				КОГДА НаборыЗначений.ЗначениеБезГрупп
				ТОГДА
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
						ГДЕ
							  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
							И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
					=
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
						      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
			  #КонецЕсли
				КОГДА НаборыЗначений.СтандартноеЗначение
			#Иначе
				КОГДА
					ИСТИНА В
					(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
							ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
					)
			#КонецЕсли
			#Если &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				ТОГДА
					ИСТИНА
			#Иначе
				ТОГДА
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ВЫБОР
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					КОГДА
						НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
						И НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
					ТОГДА
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
							ГДЕ
								  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#КонецЕсли
				#Если Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОГДА
						ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
							ГДЕ
								  ГруппыЗначенийДоступа.ЗначениеДоступа       = НаборыЗначений.ЗначениеДоступа
								И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
							)
					ТОГДА
						ИСТИНА
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ИНАЧЕ
				#КонецЕсли
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
								ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
							ПО
								  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
								И ГруппыЗначений.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОНЕЦ
				#КонецЕсли
			#КонецЕсли
				// Проверка заведомого ложного или истинного однострочного набора значений.
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен)
				ТОГДА ИСТИНА
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен)
				ТОГДА ЛОЖЬ
				// Проверка права доступа пользователя к таблице ЗначенияДоступа.
				КОГДА ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
				  ИЛИ ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
					)
			#Иначе
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
							И НЕ(НаборыЗначений.Уточнение &lt;&gt; ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
									И ТаблицыГруппДоступаПроверкаПраваНаОбъект.ПравоИзменение = ЛОЖЬ)
					)
			#КонецЕсли
			#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
				ИНАЧЕ
					(
					ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					)
			#Иначе
				ИНАЧЕ
					ЛОЖЬ
			#КонецЕсли
				КОНЕЦ
				) // НЕ ЛОЖЬ В
		  )
		 )
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		КОНЕЦ
	#КонецЕсли
  #КонецЕсли
	)

#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(27)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(28)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(28)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(27),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(27)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(27)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(27)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(27),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(28), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(27),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(27),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(28)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(27),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(28)
		#ИначеЕсли "#Параметр(28)" = "Т.Ссылка"
		         И "#Параметр(27)" &lt;&gt; "Пользователи"
		         И "#Параметр(27)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(27)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(27)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(27),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(28)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(28)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(28))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )

#Иначе
	ЕСТЬNULL(#Параметр(28), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(29)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 9.
#Если "#Параметр(30)" = "" И "#Параметр(31)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(30)" = "Условие" Или "#Параметр(30)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(31) )
#ИначеЕсли "#Параметр(30)" = "ПравоЧтения" Или "#Параметр(30)" = "ПравоИзменения" #Тогда
	 #Параметр(31) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(31))
		#Если Не "#Параметр(30)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(30)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(30)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(31)
		#Если Не "#Параметр(30)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(30)" = "Объект" Или "#Параметр(30)" = " " #Тогда
	(
		// Проверка права объекта ведущей таблицы (зависимость по правам)
		(
			ИСТИНА В
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваОбъекта
			ГДЕ
				  ТаблицыГруппДоступаПроверкаПраваОбъекта.ГруппаДоступа = ГруппыДоступа.Ссылка
				И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПраваОбъекта.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(31))
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Проверка ведущего права для права Чтение
				// Право Чтение может зависеть только от права Чтение
			#Иначе
				// Проверка ведущего права для права Изменение
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И НЕ
				(	  ТаблицыГруппДоступаПроверкаПраваОбъекта.ПравоИзменение = ЛОЖЬ
					И НЕ ИСТИНА В
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
					ГДЕ
						  ЗависимостиПравДоступа.ПодчиненнаяТаблица = СвойстваТекущейТаблицы.Ссылка
						И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(31))
					)
				)
			#КонецЕсли
			)
		)
  #Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
		// Проверка ограничения права объекта ведущей таблицы
		И 
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		ВЫБОР КОГДА ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(31))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
			ИЛИ ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(31))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
		ТОГДА
			(
				ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(31)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
				И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(31)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
			)
		ИНАЧЕ
	#КонецЕсли
	#Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
		НЕ
		 (
		  ИСТИНА В // Не все проверки отключены.
		  (
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора с не отключенной проверкой.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
				ГДЕ
					  НомераНаборов.Объект = #Параметр(31)
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					// Право Чтение может зависеть только от права Чтение
					И НомераНаборов.Чтение = ИСТИНА
				#Иначе
					// Право Изменение может зависеть от ведущих прав Чтение, Изменение
					И ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
							ГДЕ
								  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
								И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(31))
							)
						ТОГДА НомераНаборов.Чтение
						ИНАЧЕ НомераНаборов.Изменение
					  КОНЕЦ
				#КонецЕсли
					И
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(31)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
		  ) И НЕ
	#Иначе
		 (
	#КонецЕсли
		  ИСТИНА В
		  (
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора по которому доступ разрешен.
			ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
				  НомераНаборов.Объект = #Параметр(31)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				И НомераНаборов.Чтение = ИСТИНА
			#Иначе
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
						ГДЕ
							  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
							И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(31))
						)
					ТОГДА НомераНаборов.Чтение
					ИНАЧЕ НомераНаборов.Изменение
				  КОНЕЦ
			#КонецЕсли
				И
			  #Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(31)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
				И
			  #КонецЕсли
				  НЕ ЛОЖЬ В // Все проверки успешны.
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ // Выбор первого не разрешенного значения доступа.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
				ГДЕ
					  НаборыЗначений.Объект      = #Параметр(31)
					И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
					И НЕ
				ВЫБОР
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
			  #Если НЕ &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				КОГДА НаборыЗначений.ЗначениеБезГрупп
				ТОГДА
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
						ГДЕ
							  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
							И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
					=
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
						      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
			  #КонецЕсли
				КОГДА НаборыЗначений.СтандартноеЗначение
			#Иначе
				КОГДА
					ИСТИНА В
					(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
							ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
					)
			#КонецЕсли
			#Если &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				ТОГДА
					ИСТИНА
			#Иначе
				ТОГДА
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ВЫБОР
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					КОГДА
						НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
						И НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
					ТОГДА
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
							ГДЕ
								  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#КонецЕсли
				#Если Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОГДА
						ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
							ГДЕ
								  ГруппыЗначенийДоступа.ЗначениеДоступа       = НаборыЗначений.ЗначениеДоступа
								И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
							)
					ТОГДА
						ИСТИНА
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ИНАЧЕ
				#КонецЕсли
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
								ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
							ПО
								  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
								И ГруппыЗначений.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОНЕЦ
				#КонецЕсли
			#КонецЕсли
				// Проверка заведомого ложного или истинного однострочного набора значений.
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен)
				ТОГДА ИСТИНА
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен)
				ТОГДА ЛОЖЬ
				// Проверка права доступа пользователя к таблице ЗначенияДоступа.
				КОГДА ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
				  ИЛИ ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
					)
			#Иначе
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
							И НЕ(НаборыЗначений.Уточнение &lt;&gt; ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
									И ТаблицыГруппДоступаПроверкаПраваНаОбъект.ПравоИзменение = ЛОЖЬ)
					)
			#КонецЕсли
			#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
				ИНАЧЕ
					(
					ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					)
			#Иначе
				ИНАЧЕ
					ЛОЖЬ
			#КонецЕсли
				КОНЕЦ
				) // НЕ ЛОЖЬ В
		  )
		 )
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		КОНЕЦ
	#КонецЕсли
  #КонецЕсли
	)

#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(30)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(31)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(31)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(30),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(30)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(30)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(30)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(30),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(31), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(30),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(30),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(31)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(30),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(31)
		#ИначеЕсли "#Параметр(31)" = "Т.Ссылка"
		         И "#Параметр(30)" &lt;&gt; "Пользователи"
		         И "#Параметр(30)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(30)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(30)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(30),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(31)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(31)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(31))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )

#Иначе
	ЕСТЬNULL(#Параметр(31), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(32)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 10.
#Если "#Параметр(33)" = "" И "#Параметр(34)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(33)" = "Условие" Или "#Параметр(33)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(34) )
#ИначеЕсли "#Параметр(33)" = "ПравоЧтения" Или "#Параметр(33)" = "ПравоИзменения" #Тогда
	 #Параметр(34) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(34))
		#Если Не "#Параметр(33)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(33)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(33)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(34)
		#Если Не "#Параметр(33)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(33)" = "Объект" Или "#Параметр(33)" = " " #Тогда
	(
		// Проверка права объекта ведущей таблицы (зависимость по правам)
		(
			ИСТИНА В
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваОбъекта
			ГДЕ
				  ТаблицыГруппДоступаПроверкаПраваОбъекта.ГруппаДоступа = ГруппыДоступа.Ссылка
				И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПраваОбъекта.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(34))
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Проверка ведущего права для права Чтение
				// Право Чтение может зависеть только от права Чтение
			#Иначе
				// Проверка ведущего права для права Изменение
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И НЕ
				(	  ТаблицыГруппДоступаПроверкаПраваОбъекта.ПравоИзменение = ЛОЖЬ
					И НЕ ИСТИНА В
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
					ГДЕ
						  ЗависимостиПравДоступа.ПодчиненнаяТаблица = СвойстваТекущейТаблицы.Ссылка
						И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(34))
					)
				)
			#КонецЕсли
			)
		)
  #Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
		// Проверка ограничения права объекта ведущей таблицы
		И 
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		ВЫБОР КОГДА ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(34))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
			ИЛИ ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(34))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
		ТОГДА
			(
				ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(34)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
				И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(34)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
			)
		ИНАЧЕ
	#КонецЕсли
	#Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
		НЕ
		 (
		  ИСТИНА В // Не все проверки отключены.
		  (
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора с не отключенной проверкой.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
				ГДЕ
					  НомераНаборов.Объект = #Параметр(34)
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					// Право Чтение может зависеть только от права Чтение
					И НомераНаборов.Чтение = ИСТИНА
				#Иначе
					// Право Изменение может зависеть от ведущих прав Чтение, Изменение
					И ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
							ГДЕ
								  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
								И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(34))
							)
						ТОГДА НомераНаборов.Чтение
						ИНАЧЕ НомераНаборов.Изменение
					  КОНЕЦ
				#КонецЕсли
					И
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(34)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
		  ) И НЕ
	#Иначе
		 (
	#КонецЕсли
		  ИСТИНА В
		  (
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора по которому доступ разрешен.
			ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
				  НомераНаборов.Объект = #Параметр(34)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				И НомераНаборов.Чтение = ИСТИНА
			#Иначе
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
						ГДЕ
							  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
							И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(34))
						)
					ТОГДА НомераНаборов.Чтение
					ИНАЧЕ НомераНаборов.Изменение
				  КОНЕЦ
			#КонецЕсли
				И
			  #Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(34)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
				И
			  #КонецЕсли
				  НЕ ЛОЖЬ В // Все проверки успешны.
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ // Выбор первого не разрешенного значения доступа.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
				ГДЕ
					  НаборыЗначений.Объект      = #Параметр(34)
					И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
					И НЕ
				ВЫБОР
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
			  #Если НЕ &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				КОГДА НаборыЗначений.ЗначениеБезГрупп
				ТОГДА
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
						ГДЕ
							  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
							И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
					=
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
						      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
			  #КонецЕсли
				КОГДА НаборыЗначений.СтандартноеЗначение
			#Иначе
				КОГДА
					ИСТИНА В
					(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
							ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
					)
			#КонецЕсли
			#Если &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				ТОГДА
					ИСТИНА
			#Иначе
				ТОГДА
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ВЫБОР
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					КОГДА
						НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
						И НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
					ТОГДА
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
							ГДЕ
								  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#КонецЕсли
				#Если Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОГДА
						ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
							ГДЕ
								  ГруппыЗначенийДоступа.ЗначениеДоступа       = НаборыЗначений.ЗначениеДоступа
								И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
							)
					ТОГДА
						ИСТИНА
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ИНАЧЕ
				#КонецЕсли
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
								ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
							ПО
								  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
								И ГруппыЗначений.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОНЕЦ
				#КонецЕсли
			#КонецЕсли
				// Проверка заведомого ложного или истинного однострочного набора значений.
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен)
				ТОГДА ИСТИНА
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен)
				ТОГДА ЛОЖЬ
				// Проверка права доступа пользователя к таблице ЗначенияДоступа.
				КОГДА ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
				  ИЛИ ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
					)
			#Иначе
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
							И НЕ(НаборыЗначений.Уточнение &lt;&gt; ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
									И ТаблицыГруппДоступаПроверкаПраваНаОбъект.ПравоИзменение = ЛОЖЬ)
					)
			#КонецЕсли
			#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
				ИНАЧЕ
					(
					ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					)
			#Иначе
				ИНАЧЕ
					ЛОЖЬ
			#КонецЕсли
				КОНЕЦ
				) // НЕ ЛОЖЬ В
		  )
		 )
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		КОНЕЦ
	#КонецЕсли
  #КонецЕсли
	)

#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(33)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(34)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(34)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(33),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(33)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(33)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(33)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(33),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(34), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(33),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(33),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(34)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(33),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(34)
		#ИначеЕсли "#Параметр(34)" = "Т.Ссылка"
		         И "#Параметр(33)" &lt;&gt; "Пользователи"
		         И "#Параметр(33)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(33)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(33)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(33),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(34)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(34)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(34))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )

#Иначе
	ЕСТЬNULL(#Параметр(34), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(35)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 11.
#Если "#Параметр(36)" = "" И "#Параметр(37)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(36)" = "Условие" Или "#Параметр(36)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(37) )
#ИначеЕсли "#Параметр(36)" = "ПравоЧтения" Или "#Параметр(36)" = "ПравоИзменения" #Тогда
	 #Параметр(37) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(37))
		#Если Не "#Параметр(36)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(36)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(36)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(37)
		#Если Не "#Параметр(36)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(36)" = "Объект" Или "#Параметр(36)" = " " #Тогда
	(
		// Проверка права объекта ведущей таблицы (зависимость по правам)
		(
			ИСТИНА В
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваОбъекта
			ГДЕ
				  ТаблицыГруппДоступаПроверкаПраваОбъекта.ГруппаДоступа = ГруппыДоступа.Ссылка
				И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПраваОбъекта.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(37))
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Проверка ведущего права для права Чтение
				// Право Чтение может зависеть только от права Чтение
			#Иначе
				// Проверка ведущего права для права Изменение
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И НЕ
				(	  ТаблицыГруппДоступаПроверкаПраваОбъекта.ПравоИзменение = ЛОЖЬ
					И НЕ ИСТИНА В
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
					ГДЕ
						  ЗависимостиПравДоступа.ПодчиненнаяТаблица = СвойстваТекущейТаблицы.Ссылка
						И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(37))
					)
				)
			#КонецЕсли
			)
		)
  #Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
		// Проверка ограничения права объекта ведущей таблицы
		И 
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		ВЫБОР КОГДА ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(37))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
			ИЛИ ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(37))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
		ТОГДА
			(
				ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(37)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
				И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(37)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
			)
		ИНАЧЕ
	#КонецЕсли
	#Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
		НЕ
		 (
		  ИСТИНА В // Не все проверки отключены.
		  (
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора с не отключенной проверкой.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
				ГДЕ
					  НомераНаборов.Объект = #Параметр(37)
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					// Право Чтение может зависеть только от права Чтение
					И НомераНаборов.Чтение = ИСТИНА
				#Иначе
					// Право Изменение может зависеть от ведущих прав Чтение, Изменение
					И ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
							ГДЕ
								  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
								И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(37))
							)
						ТОГДА НомераНаборов.Чтение
						ИНАЧЕ НомераНаборов.Изменение
					  КОНЕЦ
				#КонецЕсли
					И
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(37)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
		  ) И НЕ
	#Иначе
		 (
	#КонецЕсли
		  ИСТИНА В
		  (
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора по которому доступ разрешен.
			ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
				  НомераНаборов.Объект = #Параметр(37)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				И НомераНаборов.Чтение = ИСТИНА
			#Иначе
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
						ГДЕ
							  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
							И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(37))
						)
					ТОГДА НомераНаборов.Чтение
					ИНАЧЕ НомераНаборов.Изменение
				  КОНЕЦ
			#КонецЕсли
				И
			  #Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(37)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
				И
			  #КонецЕсли
				  НЕ ЛОЖЬ В // Все проверки успешны.
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ // Выбор первого не разрешенного значения доступа.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
				ГДЕ
					  НаборыЗначений.Объект      = #Параметр(37)
					И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
					И НЕ
				ВЫБОР
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
			  #Если НЕ &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				КОГДА НаборыЗначений.ЗначениеБезГрупп
				ТОГДА
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
						ГДЕ
							  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
							И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
					=
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
						      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
			  #КонецЕсли
				КОГДА НаборыЗначений.СтандартноеЗначение
			#Иначе
				КОГДА
					ИСТИНА В
					(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
							ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
					)
			#КонецЕсли
			#Если &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				ТОГДА
					ИСТИНА
			#Иначе
				ТОГДА
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ВЫБОР
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					КОГДА
						НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
						И НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
					ТОГДА
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
							ГДЕ
								  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#КонецЕсли
				#Если Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОГДА
						ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
							ГДЕ
								  ГруппыЗначенийДоступа.ЗначениеДоступа       = НаборыЗначений.ЗначениеДоступа
								И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
							)
					ТОГДА
						ИСТИНА
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ИНАЧЕ
				#КонецЕсли
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
								ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
							ПО
								  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
								И ГруппыЗначений.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОНЕЦ
				#КонецЕсли
			#КонецЕсли
				// Проверка заведомого ложного или истинного однострочного набора значений.
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен)
				ТОГДА ИСТИНА
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен)
				ТОГДА ЛОЖЬ
				// Проверка права доступа пользователя к таблице ЗначенияДоступа.
				КОГДА ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
				  ИЛИ ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
					)
			#Иначе
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
							И НЕ(НаборыЗначений.Уточнение &lt;&gt; ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
									И ТаблицыГруппДоступаПроверкаПраваНаОбъект.ПравоИзменение = ЛОЖЬ)
					)
			#КонецЕсли
			#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
				ИНАЧЕ
					(
					ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					)
			#Иначе
				ИНАЧЕ
					ЛОЖЬ
			#КонецЕсли
				КОНЕЦ
				) // НЕ ЛОЖЬ В
		  )
		 )
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		КОНЕЦ
	#КонецЕсли
  #КонецЕсли
	)

#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(36)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(37)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(37)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(36),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(36)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(36)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(36)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(36),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(37), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(36),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(36),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(37)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(36),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(37)
		#ИначеЕсли "#Параметр(37)" = "Т.Ссылка"
		         И "#Параметр(36)" &lt;&gt; "Пользователи"
		         И "#Параметр(36)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(36)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(36)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(36),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(37)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(37)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(37))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )

#Иначе
	ЕСТЬNULL(#Параметр(37), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(38)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 12.
#Если "#Параметр(39)" = "" И "#Параметр(40)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(39)" = "Условие" Или "#Параметр(39)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(40) )
#ИначеЕсли "#Параметр(39)" = "ПравоЧтения" Или "#Параметр(39)" = "ПравоИзменения" #Тогда
	 #Параметр(40) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(40))
		#Если Не "#Параметр(39)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(39)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(39)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(40)
		#Если Не "#Параметр(39)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(39)" = "Объект" Или "#Параметр(39)" = " " #Тогда
	(
		// Проверка права объекта ведущей таблицы (зависимость по правам)
		(
			ИСТИНА В
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваОбъекта
			ГДЕ
				  ТаблицыГруппДоступаПроверкаПраваОбъекта.ГруппаДоступа = ГруппыДоступа.Ссылка
				И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПраваОбъекта.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(40))
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Проверка ведущего права для права Чтение
				// Право Чтение может зависеть только от права Чтение
			#Иначе
				// Проверка ведущего права для права Изменение
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И НЕ
				(	  ТаблицыГруппДоступаПроверкаПраваОбъекта.ПравоИзменение = ЛОЖЬ
					И НЕ ИСТИНА В
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
					ГДЕ
						  ЗависимостиПравДоступа.ПодчиненнаяТаблица = СвойстваТекущейТаблицы.Ссылка
						И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(40))
					)
				)
			#КонецЕсли
			)
		)
  #Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
		// Проверка ограничения права объекта ведущей таблицы
		И 
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		ВЫБОР КОГДА ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(40))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
			ИЛИ ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(40))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
		ТОГДА
			(
				ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(40)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
				И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(40)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
			)
		ИНАЧЕ
	#КонецЕсли
	#Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
		НЕ
		 (
		  ИСТИНА В // Не все проверки отключены.
		  (
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора с не отключенной проверкой.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
				ГДЕ
					  НомераНаборов.Объект = #Параметр(40)
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					// Право Чтение может зависеть только от права Чтение
					И НомераНаборов.Чтение = ИСТИНА
				#Иначе
					// Право Изменение может зависеть от ведущих прав Чтение, Изменение
					И ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
							ГДЕ
								  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
								И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(40))
							)
						ТОГДА НомераНаборов.Чтение
						ИНАЧЕ НомераНаборов.Изменение
					  КОНЕЦ
				#КонецЕсли
					И
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(40)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
		  ) И НЕ
	#Иначе
		 (
	#КонецЕсли
		  ИСТИНА В
		  (
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора по которому доступ разрешен.
			ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
				  НомераНаборов.Объект = #Параметр(40)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				И НомераНаборов.Чтение = ИСТИНА
			#Иначе
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
						ГДЕ
							  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
							И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(40))
						)
					ТОГДА НомераНаборов.Чтение
					ИНАЧЕ НомераНаборов.Изменение
				  КОНЕЦ
			#КонецЕсли
				И
			  #Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(40)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
				И
			  #КонецЕсли
				  НЕ ЛОЖЬ В // Все проверки успешны.
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ // Выбор первого не разрешенного значения доступа.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
				ГДЕ
					  НаборыЗначений.Объект      = #Параметр(40)
					И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
					И НЕ
				ВЫБОР
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
			  #Если НЕ &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				КОГДА НаборыЗначений.ЗначениеБезГрупп
				ТОГДА
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
						ГДЕ
							  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
							И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
					=
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
						      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
			  #КонецЕсли
				КОГДА НаборыЗначений.СтандартноеЗначение
			#Иначе
				КОГДА
					ИСТИНА В
					(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
							ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
					)
			#КонецЕсли
			#Если &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				ТОГДА
					ИСТИНА
			#Иначе
				ТОГДА
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ВЫБОР
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					КОГДА
						НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
						И НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
					ТОГДА
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
							ГДЕ
								  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#КонецЕсли
				#Если Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОГДА
						ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
							ГДЕ
								  ГруппыЗначенийДоступа.ЗначениеДоступа       = НаборыЗначений.ЗначениеДоступа
								И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
							)
					ТОГДА
						ИСТИНА
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ИНАЧЕ
				#КонецЕсли
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
								ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
							ПО
								  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
								И ГруппыЗначений.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОНЕЦ
				#КонецЕсли
			#КонецЕсли
				// Проверка заведомого ложного или истинного однострочного набора значений.
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен)
				ТОГДА ИСТИНА
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен)
				ТОГДА ЛОЖЬ
				// Проверка права доступа пользователя к таблице ЗначенияДоступа.
				КОГДА ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
				  ИЛИ ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
					)
			#Иначе
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
							И НЕ(НаборыЗначений.Уточнение &lt;&gt; ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
									И ТаблицыГруппДоступаПроверкаПраваНаОбъект.ПравоИзменение = ЛОЖЬ)
					)
			#КонецЕсли
			#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
				ИНАЧЕ
					(
					ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					)
			#Иначе
				ИНАЧЕ
					ЛОЖЬ
			#КонецЕсли
				КОНЕЦ
				) // НЕ ЛОЖЬ В
		  )
		 )
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		КОНЕЦ
	#КонецЕсли
  #КонецЕсли
	)

#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(39)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(40)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(40)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(39),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(39)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(39)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(39)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(39),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(40), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(39),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(39),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(40)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(39),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(40)
		#ИначеЕсли "#Параметр(40)" = "Т.Ссылка"
		         И "#Параметр(39)" &lt;&gt; "Пользователи"
		         И "#Параметр(39)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(39)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(39)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(39),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(40)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(40)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(40))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )

#Иначе
	ЕСТЬNULL(#Параметр(40), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(41)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 13.
#Если "#Параметр(42)" = "" И "#Параметр(43)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(42)" = "Условие" Или "#Параметр(42)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(43) )
#ИначеЕсли "#Параметр(42)" = "ПравоЧтения" Или "#Параметр(42)" = "ПравоИзменения" #Тогда
	 #Параметр(43) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(43))
		#Если Не "#Параметр(42)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(42)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(42)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(43)
		#Если Не "#Параметр(42)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(42)" = "Объект" Или "#Параметр(42)" = " " #Тогда
	(
		// Проверка права объекта ведущей таблицы (зависимость по правам)
		(
			ИСТИНА В
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваОбъекта
			ГДЕ
				  ТаблицыГруппДоступаПроверкаПраваОбъекта.ГруппаДоступа = ГруппыДоступа.Ссылка
				И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПраваОбъекта.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(43))
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Проверка ведущего права для права Чтение
				// Право Чтение может зависеть только от права Чтение
			#Иначе
				// Проверка ведущего права для права Изменение
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И НЕ
				(	  ТаблицыГруппДоступаПроверкаПраваОбъекта.ПравоИзменение = ЛОЖЬ
					И НЕ ИСТИНА В
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
					ГДЕ
						  ЗависимостиПравДоступа.ПодчиненнаяТаблица = СвойстваТекущейТаблицы.Ссылка
						И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(43))
					)
				)
			#КонецЕсли
			)
		)
  #Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
		// Проверка ограничения права объекта ведущей таблицы
		И 
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		ВЫБОР КОГДА ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(43))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
			ИЛИ ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(43))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
		ТОГДА
			(
				ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(43)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
				И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(43)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
			)
		ИНАЧЕ
	#КонецЕсли
	#Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
		НЕ
		 (
		  ИСТИНА В // Не все проверки отключены.
		  (
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора с не отключенной проверкой.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
				ГДЕ
					  НомераНаборов.Объект = #Параметр(43)
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					// Право Чтение может зависеть только от права Чтение
					И НомераНаборов.Чтение = ИСТИНА
				#Иначе
					// Право Изменение может зависеть от ведущих прав Чтение, Изменение
					И ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
							ГДЕ
								  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
								И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(43))
							)
						ТОГДА НомераНаборов.Чтение
						ИНАЧЕ НомераНаборов.Изменение
					  КОНЕЦ
				#КонецЕсли
					И
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(43)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
		  ) И НЕ
	#Иначе
		 (
	#КонецЕсли
		  ИСТИНА В
		  (
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора по которому доступ разрешен.
			ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
				  НомераНаборов.Объект = #Параметр(43)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				И НомераНаборов.Чтение = ИСТИНА
			#Иначе
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
						ГДЕ
							  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
							И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(43))
						)
					ТОГДА НомераНаборов.Чтение
					ИНАЧЕ НомераНаборов.Изменение
				  КОНЕЦ
			#КонецЕсли
				И
			  #Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(43)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
				И
			  #КонецЕсли
				  НЕ ЛОЖЬ В // Все проверки успешны.
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ // Выбор первого не разрешенного значения доступа.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
				ГДЕ
					  НаборыЗначений.Объект      = #Параметр(43)
					И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
					И НЕ
				ВЫБОР
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
			  #Если НЕ &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				КОГДА НаборыЗначений.ЗначениеБезГрупп
				ТОГДА
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
						ГДЕ
							  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
							И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
					=
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
						      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
			  #КонецЕсли
				КОГДА НаборыЗначений.СтандартноеЗначение
			#Иначе
				КОГДА
					ИСТИНА В
					(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
							ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
					)
			#КонецЕсли
			#Если &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				ТОГДА
					ИСТИНА
			#Иначе
				ТОГДА
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ВЫБОР
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					КОГДА
						НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
						И НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
					ТОГДА
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
							ГДЕ
								  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#КонецЕсли
				#Если Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОГДА
						ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
							ГДЕ
								  ГруппыЗначенийДоступа.ЗначениеДоступа       = НаборыЗначений.ЗначениеДоступа
								И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
							)
					ТОГДА
						ИСТИНА
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ИНАЧЕ
				#КонецЕсли
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
								ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
							ПО
								  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
								И ГруппыЗначений.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОНЕЦ
				#КонецЕсли
			#КонецЕсли
				// Проверка заведомого ложного или истинного однострочного набора значений.
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен)
				ТОГДА ИСТИНА
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен)
				ТОГДА ЛОЖЬ
				// Проверка права доступа пользователя к таблице ЗначенияДоступа.
				КОГДА ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
				  ИЛИ ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
					)
			#Иначе
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
							И НЕ(НаборыЗначений.Уточнение &lt;&gt; ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
									И ТаблицыГруппДоступаПроверкаПраваНаОбъект.ПравоИзменение = ЛОЖЬ)
					)
			#КонецЕсли
			#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
				ИНАЧЕ
					(
					ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					)
			#Иначе
				ИНАЧЕ
					ЛОЖЬ
			#КонецЕсли
				КОНЕЦ
				) // НЕ ЛОЖЬ В
		  )
		 )
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		КОНЕЦ
	#КонецЕсли
  #КонецЕсли
	)

#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(42)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(43)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(43)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(42),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(42)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(42)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(42)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(42),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(43), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(42),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(42),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(43)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(42),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(43)
		#ИначеЕсли "#Параметр(43)" = "Т.Ссылка"
		         И "#Параметр(42)" &lt;&gt; "Пользователи"
		         И "#Параметр(42)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(42)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(42)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(42),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(43)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(43)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(43))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )

#Иначе
	ЕСТЬNULL(#Параметр(43), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(44)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 14.
#Если "#Параметр(45)" = "" И "#Параметр(46)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(45)" = "Условие" Или "#Параметр(45)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(46) )
#ИначеЕсли "#Параметр(45)" = "ПравоЧтения" Или "#Параметр(45)" = "ПравоИзменения" #Тогда
	 #Параметр(46) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(46))
		#Если Не "#Параметр(45)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(45)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(45)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(46)
		#Если Не "#Параметр(45)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(45)" = "Объект" Или "#Параметр(45)" = " " #Тогда
	(
		// Проверка права объекта ведущей таблицы (зависимость по правам)
		(
			ИСТИНА В
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваОбъекта
			ГДЕ
				  ТаблицыГруппДоступаПроверкаПраваОбъекта.ГруппаДоступа = ГруппыДоступа.Ссылка
				И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПраваОбъекта.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(46))
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Проверка ведущего права для права Чтение
				// Право Чтение может зависеть только от права Чтение
			#Иначе
				// Проверка ведущего права для права Изменение
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И НЕ
				(	  ТаблицыГруппДоступаПроверкаПраваОбъекта.ПравоИзменение = ЛОЖЬ
					И НЕ ИСТИНА В
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
					ГДЕ
						  ЗависимостиПравДоступа.ПодчиненнаяТаблица = СвойстваТекущейТаблицы.Ссылка
						И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(46))
					)
				)
			#КонецЕсли
			)
		)
  #Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
		// Проверка ограничения права объекта ведущей таблицы
		И 
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		ВЫБОР КОГДА ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(46))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
			ИЛИ ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(46))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
		ТОГДА
			(
				ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(46)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
				И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(46)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
			)
		ИНАЧЕ
	#КонецЕсли
	#Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
		НЕ
		 (
		  ИСТИНА В // Не все проверки отключены.
		  (
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора с не отключенной проверкой.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
				ГДЕ
					  НомераНаборов.Объект = #Параметр(46)
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					// Право Чтение может зависеть только от права Чтение
					И НомераНаборов.Чтение = ИСТИНА
				#Иначе
					// Право Изменение может зависеть от ведущих прав Чтение, Изменение
					И ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
							ГДЕ
								  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
								И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(46))
							)
						ТОГДА НомераНаборов.Чтение
						ИНАЧЕ НомераНаборов.Изменение
					  КОНЕЦ
				#КонецЕсли
					И
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(46)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
		  ) И НЕ
	#Иначе
		 (
	#КонецЕсли
		  ИСТИНА В
		  (
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора по которому доступ разрешен.
			ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
				  НомераНаборов.Объект = #Параметр(46)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				И НомераНаборов.Чтение = ИСТИНА
			#Иначе
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
						ГДЕ
							  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
							И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(46))
						)
					ТОГДА НомераНаборов.Чтение
					ИНАЧЕ НомераНаборов.Изменение
				  КОНЕЦ
			#КонецЕсли
				И
			  #Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(46)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
				И
			  #КонецЕсли
				  НЕ ЛОЖЬ В // Все проверки успешны.
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ // Выбор первого не разрешенного значения доступа.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
				ГДЕ
					  НаборыЗначений.Объект      = #Параметр(46)
					И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
					И НЕ
				ВЫБОР
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
			  #Если НЕ &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				КОГДА НаборыЗначений.ЗначениеБезГрупп
				ТОГДА
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
						ГДЕ
							  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
							И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
					=
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
						      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
			  #КонецЕсли
				КОГДА НаборыЗначений.СтандартноеЗначение
			#Иначе
				КОГДА
					ИСТИНА В
					(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
							ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
					)
			#КонецЕсли
			#Если &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				ТОГДА
					ИСТИНА
			#Иначе
				ТОГДА
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ВЫБОР
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					КОГДА
						НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
						И НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
					ТОГДА
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
							ГДЕ
								  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#КонецЕсли
				#Если Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОГДА
						ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
							ГДЕ
								  ГруппыЗначенийДоступа.ЗначениеДоступа       = НаборыЗначений.ЗначениеДоступа
								И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
							)
					ТОГДА
						ИСТИНА
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ИНАЧЕ
				#КонецЕсли
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
								ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
							ПО
								  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
								И ГруппыЗначений.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОНЕЦ
				#КонецЕсли
			#КонецЕсли
				// Проверка заведомого ложного или истинного однострочного набора значений.
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен)
				ТОГДА ИСТИНА
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен)
				ТОГДА ЛОЖЬ
				// Проверка права доступа пользователя к таблице ЗначенияДоступа.
				КОГДА ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
				  ИЛИ ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
					)
			#Иначе
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
							И НЕ(НаборыЗначений.Уточнение &lt;&gt; ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
									И ТаблицыГруппДоступаПроверкаПраваНаОбъект.ПравоИзменение = ЛОЖЬ)
					)
			#КонецЕсли
			#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
				ИНАЧЕ
					(
					ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					)
			#Иначе
				ИНАЧЕ
					ЛОЖЬ
			#КонецЕсли
				КОНЕЦ
				) // НЕ ЛОЖЬ В
		  )
		 )
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		КОНЕЦ
	#КонецЕсли
  #КонецЕсли
	)

#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(45)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(46)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(46)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(45),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(45)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(45)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(45)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(45),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(46), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(45),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(45),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(46)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(45),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(46)
		#ИначеЕсли "#Параметр(46)" = "Т.Ссылка"
		         И "#Параметр(45)" &lt;&gt; "Пользователи"
		         И "#Параметр(45)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(45)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(45)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(45),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(46)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(46)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(46))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )

#Иначе
	ЕСТЬNULL(#Параметр(46), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(47)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 15.
#Если "#Параметр(48)" = "" И "#Параметр(49)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(48)" = "Условие" Или "#Параметр(48)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(49) )
#ИначеЕсли "#Параметр(48)" = "ПравоЧтения" Или "#Параметр(48)" = "ПравоИзменения" #Тогда
	 #Параметр(49) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(49))
		#Если Не "#Параметр(48)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(48)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(48)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(49)
		#Если Не "#Параметр(48)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(48)" = "Объект" Или "#Параметр(48)" = " " #Тогда
	(
		// Проверка права объекта ведущей таблицы (зависимость по правам)
		(
			ИСТИНА В
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваОбъекта
			ГДЕ
				  ТаблицыГруппДоступаПроверкаПраваОбъекта.ГруппаДоступа = ГруппыДоступа.Ссылка
				И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПраваОбъекта.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(49))
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Проверка ведущего права для права Чтение
				// Право Чтение может зависеть только от права Чтение
			#Иначе
				// Проверка ведущего права для права Изменение
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И НЕ
				(	  ТаблицыГруппДоступаПроверкаПраваОбъекта.ПравоИзменение = ЛОЖЬ
					И НЕ ИСТИНА В
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
					ГДЕ
						  ЗависимостиПравДоступа.ПодчиненнаяТаблица = СвойстваТекущейТаблицы.Ссылка
						И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(49))
					)
				)
			#КонецЕсли
			)
		)
  #Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
		// Проверка ограничения права объекта ведущей таблицы
		И 
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		ВЫБОР КОГДА ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(49))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
			ИЛИ ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(49))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
		ТОГДА
			(
				ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(49)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
				И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(49)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
			)
		ИНАЧЕ
	#КонецЕсли
	#Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
		НЕ
		 (
		  ИСТИНА В // Не все проверки отключены.
		  (
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора с не отключенной проверкой.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
				ГДЕ
					  НомераНаборов.Объект = #Параметр(49)
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					// Право Чтение может зависеть только от права Чтение
					И НомераНаборов.Чтение = ИСТИНА
				#Иначе
					// Право Изменение может зависеть от ведущих прав Чтение, Изменение
					И ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
							ГДЕ
								  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
								И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(49))
							)
						ТОГДА НомераНаборов.Чтение
						ИНАЧЕ НомераНаборов.Изменение
					  КОНЕЦ
				#КонецЕсли
					И
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(49)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
		  ) И НЕ
	#Иначе
		 (
	#КонецЕсли
		  ИСТИНА В
		  (
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора по которому доступ разрешен.
			ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
				  НомераНаборов.Объект = #Параметр(49)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				И НомераНаборов.Чтение = ИСТИНА
			#Иначе
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
						ГДЕ
							  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
							И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(49))
						)
					ТОГДА НомераНаборов.Чтение
					ИНАЧЕ НомераНаборов.Изменение
				  КОНЕЦ
			#КонецЕсли
				И
			  #Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(49)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
				И
			  #КонецЕсли
				  НЕ ЛОЖЬ В // Все проверки успешны.
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ // Выбор первого не разрешенного значения доступа.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
				ГДЕ
					  НаборыЗначений.Объект      = #Параметр(49)
					И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
					И НЕ
				ВЫБОР
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
			  #Если НЕ &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				КОГДА НаборыЗначений.ЗначениеБезГрупп
				ТОГДА
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
						ГДЕ
							  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
							И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
					=
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
						      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
			  #КонецЕсли
				КОГДА НаборыЗначений.СтандартноеЗначение
			#Иначе
				КОГДА
					ИСТИНА В
					(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
							ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
					)
			#КонецЕсли
			#Если &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				ТОГДА
					ИСТИНА
			#Иначе
				ТОГДА
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ВЫБОР
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					КОГДА
						НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
						И НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
					ТОГДА
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
							ГДЕ
								  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#КонецЕсли
				#Если Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОГДА
						ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
							ГДЕ
								  ГруппыЗначенийДоступа.ЗначениеДоступа       = НаборыЗначений.ЗначениеДоступа
								И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
							)
					ТОГДА
						ИСТИНА
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ИНАЧЕ
				#КонецЕсли
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
								ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
							ПО
								  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
								И ГруппыЗначений.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОНЕЦ
				#КонецЕсли
			#КонецЕсли
				// Проверка заведомого ложного или истинного однострочного набора значений.
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен)
				ТОГДА ИСТИНА
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен)
				ТОГДА ЛОЖЬ
				// Проверка права доступа пользователя к таблице ЗначенияДоступа.
				КОГДА ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
				  ИЛИ ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
					)
			#Иначе
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
							И НЕ(НаборыЗначений.Уточнение &lt;&gt; ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
									И ТаблицыГруппДоступаПроверкаПраваНаОбъект.ПравоИзменение = ЛОЖЬ)
					)
			#КонецЕсли
			#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
				ИНАЧЕ
					(
					ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					)
			#Иначе
				ИНАЧЕ
					ЛОЖЬ
			#КонецЕсли
				КОНЕЦ
				) // НЕ ЛОЖЬ В
		  )
		 )
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		КОНЕЦ
	#КонецЕсли
  #КонецЕсли
	)

#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(48)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(49)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(49)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(48),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(48)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(48)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(48)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(48),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(49), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(48),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(48),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(49)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(48),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(49)
		#ИначеЕсли "#Параметр(49)" = "Т.Ссылка"
		         И "#Параметр(48)" &lt;&gt; "Пользователи"
		         И "#Параметр(48)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(48)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(48)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(48),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(49)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(49)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(49))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )

#Иначе
	ЕСТЬNULL(#Параметр(49), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(50)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 16.
#Если "#Параметр(51)" = "" И "#Параметр(52)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(51)" = "Условие" Или "#Параметр(51)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(52) )
#ИначеЕсли "#Параметр(51)" = "ПравоЧтения" Или "#Параметр(51)" = "ПравоИзменения" #Тогда
	 #Параметр(52) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(52))
		#Если Не "#Параметр(51)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(51)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(51)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(52)
		#Если Не "#Параметр(51)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(51)" = "Объект" Или "#Параметр(51)" = " " #Тогда
	(
		// Проверка права объекта ведущей таблицы (зависимость по правам)
		(
			ИСТИНА В
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваОбъекта
			ГДЕ
				  ТаблицыГруппДоступаПроверкаПраваОбъекта.ГруппаДоступа = ГруппыДоступа.Ссылка
				И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПраваОбъекта.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(52))
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Проверка ведущего права для права Чтение
				// Право Чтение может зависеть только от права Чтение
			#Иначе
				// Проверка ведущего права для права Изменение
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И НЕ
				(	  ТаблицыГруппДоступаПроверкаПраваОбъекта.ПравоИзменение = ЛОЖЬ
					И НЕ ИСТИНА В
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
					ГДЕ
						  ЗависимостиПравДоступа.ПодчиненнаяТаблица = СвойстваТекущейТаблицы.Ссылка
						И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(52))
					)
				)
			#КонецЕсли
			)
		)
  #Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
		// Проверка ограничения права объекта ведущей таблицы
		И 
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		ВЫБОР КОГДА ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(52))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
			ИЛИ ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК Идентификаторы
					ГДЕ
						  ТИПЗНАЧЕНИЯ(Идентификаторы.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(#Параметр(52))
						И Идентификаторы.ЗначениеПустойСсылки В (&amp;ТипыВладельцевНастроекПрав)
				)
		ТОГДА
			(
				ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(52)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
				И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = #Параметр(52)
							И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
						#Иначе
						  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
							И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
						  #Иначе
							И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
						  #КонецЕсли
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
			)
		ИНАЧЕ
	#КонецЕсли
	#Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
		НЕ
		 (
		  ИСТИНА В // Не все проверки отключены.
		  (
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора с не отключенной проверкой.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
				ГДЕ
					  НомераНаборов.Объект = #Параметр(52)
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					// Право Чтение может зависеть только от права Чтение
					И НомераНаборов.Чтение = ИСТИНА
				#Иначе
					// Право Изменение может зависеть от ведущих прав Чтение, Изменение
					И ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
							ГДЕ
								  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
								И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(52))
							)
						ТОГДА НомераНаборов.Чтение
						ИНАЧЕ НомераНаборов.Изменение
					  КОНЕЦ
				#КонецЕсли
					И
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(52)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
		  ) И НЕ
	#Иначе
		 (
	#КонецЕсли
		  ИСТИНА В
		  (
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора по которому доступ разрешен.
			ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
				  НомераНаборов.Объект = #Параметр(52)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				И НомераНаборов.Чтение = ИСТИНА
			#Иначе
				// Право Изменение может зависеть от ведущих прав Чтение, Изменение
				И ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗависимостиПравДоступа КАК ЗависимостиПравДоступа
						ГДЕ
							  ЗависимостиПравДоступа.ПодчиненнаяТаблица             = СвойстваТекущейТаблицы.Ссылка
							И ТИПЗНАЧЕНИЯ(ЗависимостиПравДоступа.ТипВедущейТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(52))
						)
					ТОГДА НомераНаборов.Чтение
					ИНАЧЕ НомераНаборов.Изменение
				  КОНЕЦ
			#КонецЕсли
				И
			  #Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
				ИСТИНА В // Не все проверки текущего набора отключены.
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
					ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
					ГДЕ
						  НаборыЗначений.Объект      = #Параметр(52)
						И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
						И НЕ ИСТИНА В
							(
								ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
								ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
								ГДЕ
									  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
									И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
									И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
							)
				)
				И
			  #КонецЕсли
				  НЕ ЛОЖЬ В // Все проверки успешны.
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ // Выбор первого не разрешенного значения доступа.
				ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
				ГДЕ
					  НаборыЗначений.Объект      = #Параметр(52)
					И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
					И НЕ
				ВЫБОР
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
			  #Если НЕ &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				КОГДА НаборыЗначений.ЗначениеБезГрупп
				ТОГДА
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
						ГДЕ
							  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
							И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
					=
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
						      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
			  #КонецЕсли
				КОГДА НаборыЗначений.СтандартноеЗначение
			#Иначе
				КОГДА
					ИСТИНА В
					(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
							ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
					)
			#КонецЕсли
			#Если &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
				ТОГДА
					ИСТИНА
			#Иначе
				ТОГДА
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ВЫБОР
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					КОГДА
						НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
						И НЕ ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК ТипыСсылок
							ГДЕ
								  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
								И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
							)
					ТОГДА
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
							ГДЕ
								  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#КонецЕсли
				#Если Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОГДА
						ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
							ГДЕ
								  ГруппыЗначенийДоступа.ЗначениеДоступа       = НаборыЗначений.ЗначениеДоступа
								И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
							)
					ТОГДА
						ИСТИНА
				#КонецЕсли
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					ИНАЧЕ
				#КонецЕсли
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
								ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
							ПО
								  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
								И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
								И ГруппыЗначений.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
						=
						ВЫБОР
						КОГДА ИСТИНА В
							(
							ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
							ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
							ГДЕ
							      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
							    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
							)
						ТОГДА ИСТИНА
						ИНАЧЕ ЛОЖЬ
						КОНЕЦ
				#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
				  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
					КОНЕЦ
				#КонецЕсли
			#КонецЕсли
				// Проверка заведомого ложного или истинного однострочного набора значений.
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен)
				ТОГДА ИСТИНА
				КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен)
				ТОГДА ЛОЖЬ
				// Проверка права доступа пользователя к таблице ЗначенияДоступа.
				КОГДА ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
				  ИЛИ ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				// Право Чтение может зависеть только от права Чтение
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
					)
			#Иначе
				ТОГДА ИСТИНА В
					(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
						ГДЕ
							  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
							И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
							И НЕ(НаборыЗначений.Уточнение &lt;&gt; ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
									И ТаблицыГруппДоступаПроверкаПраваНаОбъект.ПравоИзменение = ЛОЖЬ)
					)
			#КонецЕсли
			#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
				ИНАЧЕ
					(
					ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
						ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
							ПО
								  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
								И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
							#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
							#Иначе
								И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
								И НастройкиПрав.Таблица = ВЫБОР
									КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
									ТОГДА НаборыЗначений.Уточнение
									ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
							#КонецЕсли
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
							ПО
								  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
								И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
						)
					)
			#Иначе
				ИНАЧЕ
					ЛОЖЬ
			#КонецЕсли
				КОНЕЦ
				) // НЕ ЛОЖЬ В
		  )
		 )
	#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
		КОНЕЦ
	#КонецЕсли
  #КонецЕсли
	)

#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(51)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(52)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(52)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(51),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(51)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(51)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(51)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(51),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(52), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(51),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(51),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(52)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(51),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(52)
		#ИначеЕсли "#Параметр(52)" = "Т.Ссылка"
		         И "#Параметр(51)" &lt;&gt; "Пользователи"
		         И "#Параметр(51)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(51)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(51)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(51),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(52)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(52)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(52))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )

#Иначе
	ЕСТЬNULL(#Параметр(52), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(53)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

  )
)
#КонецЕсли

#КонецЕсли // Информационная база заблокирована для обновления.</condition>
	</restrictionTemplate>
	<restrictionTemplate>
		<name>ПоЗначениямРасширенный</name>
		<condition>// ПоЗначениямРасширенный(Таблица, -, Модификатор, ПрисоединяемыеТаблицы, О, В1,П1,О1, В2,П2,О2,..., В(n), П(n), О(n)).
// № параметра:                 1, 2,           3,                     4, 5,  6, 7, 8,  9,10,11,...,3+n*3,4+n*3,5+n*3.
// Читается так: "ограничение доступа по значениям расширенный".
// Параметры:
//     Таблица   - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг".
//     Модификатор - изменяет шаблон.
//                 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает
//                  безусловно выбирать группы иерархического справочника. 
//                 Других модификаторов в этой версии шаблона не предусмотрено.
//     ПрисоединяемыеТаблицы - текст присоедиения дополнительных таблиц на языке запросов, например,
//                 "ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет.ОплатаПоставщикам КАК Т1
//                  ПО Т.Ссылка = Т1.Ссылка".
//                 Присоединение позволяет указать поля таблицы ОплатаПоставщикам, как поля основной таблицы
//                  для проверки их значений, как значений основной таблицы.
//                 Следует помнить, что при размножении строк в результате соединения, достаточно чтобы
//                  всего одна строка прошла условия проверки, т.е. результаты проверки строк объединяются по "ИЛИ".
//     О         - Начальные скобки "(".
//     В(n)      - Вид доступа - имя вида доступа, например, "Организации". Для полей составного типа, с целью повышения
//                  производительности, лучше указать несколько имен, например, "Организации,ГруппыФизическихЛиц",
//                  чем использовать несколько блоков параметров, с одним и тем же именем поля.
//                  Специальные виды доступа "Условие", "НастройкиПрав", "ПравоЧтения", "ПравоИзменения",
//                  "ПравоЧтенияПоИдентификатору", "ПравоИзмененияПоИдентификатору" можно использовать только отдельно.
//                 Когда В(n) = "Условие" (или ""), тогда П(n) содержит строку условия на языке запросов, например
//                  "Т.Автор = &amp;АвторизованныйПользователь",
//                  "ТИПЗНАЧЕНИЯ(Т.Владелец) = ТИП(Справочник.Организации)", где Т - псевдоним текущей таблицы.
//                 Когда В(n) = "ПравоЧтения" Или "ПравоИзменения",
//                  выполняется проверка наличия права на таблицу значения Т.П(n).
//                 Когда В(n) = "ПравоЧтенияПоИдентификатору" или "ПравоИзмененияПоИдентификатору",
//                  выполняется проверка наличия права на таблицу по идентификатору в значении Т.П(n).
//     П(n)      - Поле проверяемого значения с псевдонимом, например "Т.Организация",
//                 кроме случая В(n) = "Условие" (или "").
//     О(n)      - Логические операции "И", "ИЛИ" в сочетании с скобками "(", ")".
//  Примечение: максимальное количество одновременно проверяемых значений полей можно увеличить, изменив шаблон, но
// необходимо будет указывать все параметры шаблона, т.е. указывать пустые строки, когда количество полей меньше максимального.
//  Шаблон имеет структуру:
//     &lt;Общая часть условий&gt; &lt;Условие по группе параметров 1&gt; И/ИЛИ &lt;Условие по группе параметров 2&gt; И/ИЛИ ... &lt;Условие по группе параметров(n)&gt;
//  Пример:
//      ПоЗначениямРасширенный("Документ.ПеремещениеТоваров", "", "",
//      "",
//      "",
//      "Организации","Т.Организация","И(",
//      "Склады","Т.СкладОтправитель","ИЛИ",
//      "Склады","Т.СкладПолучатель",")", "","","", ...)

#Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется = "" #Тогда // Информационная база заблокирована для обновления.
    ГДЕ ЛОЖЬ

#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ПоЗначениямРасширенный18,") #Тогда
    Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 18 шаблона ограничения доступа ПоЗначениямРасширенный. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.

#Иначе

// Проверка правильности параметра Право.
#Если Не ("#Параметр(2)" = "Чтение"    Или "#Параметр(2)" = "Добавление" Или
          "#Параметр(2)" = "Изменение" Или "#Параметр(2)" = "Удаление"   Или "#Параметр(2)" = "")
      Или #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" И "#Параметр(2)"  = "Чтение"
      Или #ИмяТекущегоПраваДоступа  = "Чтение" И "#Параметр(2)" &lt;&gt; "Чтение" И "#Параметр(2)" &lt;&gt; "" #Тогда
    // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
    НеверноеПраво: #Параметр(2)
#КонецЕсли

// Проверка правильности параметра ИмяТаблицы.
#Если "#Параметр(1)" &lt;&gt; #ИмяТекущейТаблицы #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	НеверноеИмяТекущейТаблицы: "#Параметр(1)"
#КонецЕсли

// Проверка правильности параметра Модификатор.
#Если Не ("#Параметр(3)" = "НеОграничиватьДоступКГруппам" Или "#Параметр(3)" = "") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	НеверныйМодификатор: #Параметр(3)
#КонецЕсли

// Общая проверка использования ограничений доступа на уровне записей и
// проверка использования хотя бы одного ограничения из указанных видов доступа.
#Если Не
     (  Истина
      И ("#Параметр(6)" = "" И "#Параметр(7)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(6),"))
      И ("#Параметр(9)" = "" И "#Параметр(10)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(9),"))
      И ("#Параметр(12)" = "" И "#Параметр(13)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(12),"))
      И ("#Параметр(15)" = "" И "#Параметр(16)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(15),"))
      И ("#Параметр(18)" = "" И "#Параметр(19)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(18),"))
      И ("#Параметр(21)" = "" И "#Параметр(22)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(21),"))
      И ("#Параметр(24)" = "" И "#Параметр(25)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(24),"))
      И ("#Параметр(27)" = "" И "#Параметр(28)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(27),"))
      И ("#Параметр(30)" = "" И "#Параметр(31)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(30),"))
      И ("#Параметр(33)" = "" И "#Параметр(34)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(33),"))
      И ("#Параметр(36)" = "" И "#Параметр(37)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(36),"))
      И ("#Параметр(39)" = "" И "#Параметр(40)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(39),"))
      И ("#Параметр(42)" = "" И "#Параметр(43)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(42),"))
      И ("#Параметр(45)" = "" И "#Параметр(46)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(45),"))
      И ("#Параметр(48)" = "" И "#Параметр(49)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(48),"))
      И ("#Параметр(51)" = "" И "#Параметр(52)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(51),"))
     ) #Тогда

Т ИЗ Т // Т - псевдоним текущей таблицы (выбран коротким, чтобы сократить количество символов в тексте параметра-условия на языке запросов).

// Присоединяемые таблицы к проверяемой строке текущей таблицы "Т".
#Параметр(4)

ГДЕ

ИСТИНА В
(	// Проверка права пользователя на текущую таблицу в целом.
	// Права на таблицы формируются по составу ролей профиля группы доступа.
	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
	ИЗ
	#Если СтрСодержит(&amp;ТаблицыРасширенийСОграничениемДоступа, "|#Параметр(1);") #Тогда
		Справочник.ИдентификаторыОбъектовРасширений КАК СвойстваТекущейТаблицы
	#Иначе
		Справочник.ИдентификаторыОбъектовМетаданных КАК СвойстваТекущейТаблицы
	#КонецЕсли
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа КАК ГруппыДоступа
		ПО
			  СвойстваТекущейТаблицы.ПолноеИмя = "#Параметр(1)"
			И ИСТИНА В
			  (
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ
					РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступа
					ГДЕ
						  ТаблицыГруппДоступа.Таблица       = СвойстваТекущейТаблицы.Ссылка
						И ТаблицыГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка
					#Если #ИмяТекущегоПраваДоступа = "Изменение" #Тогда
						И ТаблицыГруппДоступа.ПравоИзменение
					#ИначеЕсли #ИмяТекущегоПраваДоступа = "Добавление" #Тогда
						И ТаблицыГруппДоступа.ПравоДобавление
					#КонецЕсли
			  )
			И ГруппыДоступа.Ссылка В
			  (
				ВЫБРАТЬ
					ГруппыДоступаПользователи.Ссылка КАК ГруппаДоступа
				ИЗ
					Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
					ПО
						  СоставыГруппПользователей.Пользователь = &amp;АвторизованныйПользователь
						И СоставыГруппПользователей.ГруппаПользователей = ГруппыДоступаПользователи.Пользователь
			  )
	ГДЕ

// Безусловная выборка групп в иерархическом объекте метаданных (если нужно).
#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" #Тогда
	Т.ЭтоГруппа ИЛИ
#КонецЕсли

  ( // Поиск значений заданных полей в разрешенных значениях групп доступа (пользователей).

	#Параметр(5)  // [([(][(]...] 0-n открывающихся скобок.

//// Проверка значения поля группы параметров 1.
#Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(6)" = "Условие" Или "#Параметр(6)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	( #Параметр(7) )
#ИначеЕсли "#Параметр(6)" = "ПравоЧтения" Или "#Параметр(6)" = "ПравоИзменения" #Тогда
	  #Параметр(7) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(7))
		#Если Не "#Параметр(6)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(6)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(6)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(7)
		#Если Не "#Параметр(6)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(6)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(7)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(7)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(6),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(6)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(6)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(6)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(6),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(7), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(6),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(6),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(7)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(6),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(7)
		#ИначеЕсли "#Параметр(7)" = "Т.Ссылка"
		         И "#Параметр(6)" &lt;&gt; "Пользователи"
		         И "#Параметр(6)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(6)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(6)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(6),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(7)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(7)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(7))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	ЕСТЬNULL(#Параметр(7), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(8)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 2.
#Если "#Параметр(9)" = "" И "#Параметр(10)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(9)" = "Условие" Или "#Параметр(9)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(10) )
#ИначеЕсли "#Параметр(9)" = "ПравоЧтения" Или "#Параметр(9)" = "ПравоИзменения" #Тогда
	 #Параметр(10) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(10))
		#Если Не "#Параметр(9)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(9)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(9)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(10)
		#Если Не "#Параметр(9)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(9)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(10)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(10)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(9),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(9)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(9)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(9)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(9),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(10), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(9),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(9),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(10)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(9),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(10)
		#ИначеЕсли "#Параметр(10)" = "Т.Ссылка"
		         И "#Параметр(9)" &lt;&gt; "Пользователи"
		         И "#Параметр(9)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(9)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(9)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(9),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(10)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(10)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(10))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	ЕСТЬNULL(#Параметр(10), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(11)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 3.
#Если "#Параметр(12)" = "" И "#Параметр(13)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(12)" = "Условие" Или "#Параметр(12)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(13) )
#ИначеЕсли "#Параметр(12)" = "ПравоЧтения" Или "#Параметр(12)" = "ПравоИзменения" #Тогда
	 #Параметр(13) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(13))
		#Если Не "#Параметр(12)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(12)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(12)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(13)
		#Если Не "#Параметр(12)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(12)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(13)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(13)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(12),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(12)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(12)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(12)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(12),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(13), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(12),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(12),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(13)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(12),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(13)
		#ИначеЕсли "#Параметр(13)" = "Т.Ссылка"
		         И "#Параметр(12)" &lt;&gt; "Пользователи"
		         И "#Параметр(12)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(12)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(12)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(12),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(13)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(13)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(13))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	ЕСТЬNULL(#Параметр(13), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(14)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 4.
#Если "#Параметр(15)" = "" И "#Параметр(16)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(15)" = "Условие" Или "#Параметр(15)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(16) )
#ИначеЕсли "#Параметр(15)" = "ПравоЧтения" Или "#Параметр(15)" = "ПравоИзменения" #Тогда
	 #Параметр(16) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(16))
		#Если Не "#Параметр(15)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(15)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(15)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(16)
		#Если Не "#Параметр(15)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(15)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(16)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(16)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(15),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(15)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(15)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(15)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(15),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(16), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(15),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(15),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(16)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(15),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(16)
		#ИначеЕсли "#Параметр(16)" = "Т.Ссылка"
		         И "#Параметр(15)" &lt;&gt; "Пользователи"
		         И "#Параметр(15)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(15)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(15)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(15),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(16)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(16)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(16))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	ЕСТЬNULL(#Параметр(16), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(17)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 5.
#Если "#Параметр(18)" = "" И "#Параметр(19)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(18)" = "Условие" Или "#Параметр(18)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(19) )
#ИначеЕсли "#Параметр(18)" = "ПравоЧтения" Или "#Параметр(18)" = "ПравоИзменения" #Тогда
	 #Параметр(19) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(19))
		#Если Не "#Параметр(18)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(18)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(18)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(19)
		#Если Не "#Параметр(18)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(18)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(19)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(19)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(18),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(18)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(18)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(18)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(18),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(19), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(18),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(18),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(19)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(18),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(19)
		#ИначеЕсли "#Параметр(19)" = "Т.Ссылка"
		         И "#Параметр(18)" &lt;&gt; "Пользователи"
		         И "#Параметр(18)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(18)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(18)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(18),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(19)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(19)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(19))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	ЕСТЬNULL(#Параметр(19), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(20)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 6.
#Если "#Параметр(21)" = "" И "#Параметр(22)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(21)" = "Условие" Или "#Параметр(21)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(22) )
#ИначеЕсли "#Параметр(21)" = "ПравоЧтения" Или "#Параметр(21)" = "ПравоИзменения" #Тогда
	 #Параметр(22) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(22))
		#Если Не "#Параметр(21)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(21)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(21)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(22)
		#Если Не "#Параметр(21)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(21)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(22)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(22)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(21),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(21)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(21)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(21)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(21),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(22), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(21),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(21),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(22)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(21),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(22)
		#ИначеЕсли "#Параметр(22)" = "Т.Ссылка"
		         И "#Параметр(21)" &lt;&gt; "Пользователи"
		         И "#Параметр(21)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(21)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(21)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(21),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(22)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(22)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(22))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	ЕСТЬNULL(#Параметр(22), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(23)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 7.
#Если "#Параметр(24)" = "" И "#Параметр(25)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(24)" = "Условие" Или "#Параметр(24)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(25) )
#ИначеЕсли "#Параметр(24)" = "ПравоЧтения" Или "#Параметр(24)" = "ПравоИзменения" #Тогда
	 #Параметр(25) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(25))
		#Если Не "#Параметр(24)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(24)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(24)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(25)
		#Если Не "#Параметр(24)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(24)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(25)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(25)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(24),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(24)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(24)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(24)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(24),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(25), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(24),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(24),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(25)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(24),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(25)
		#ИначеЕсли "#Параметр(25)" = "Т.Ссылка"
		         И "#Параметр(24)" &lt;&gt; "Пользователи"
		         И "#Параметр(24)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(24)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(24)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(24),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(25)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(25)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(25))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	ЕСТЬNULL(#Параметр(25), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(26)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 8.
#Если "#Параметр(27)" = "" И "#Параметр(28)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(27)" = "Условие" Или "#Параметр(27)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(28) )
#ИначеЕсли "#Параметр(27)" = "ПравоЧтения" Или "#Параметр(27)" = "ПравоИзменения" #Тогда
	 #Параметр(28) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(28))
		#Если Не "#Параметр(27)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(27)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(27)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(28)
		#Если Не "#Параметр(27)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(27)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(28)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(28)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(27),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(27)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(27)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(27)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(27),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(28), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(27),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(27),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(28)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(27),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(28)
		#ИначеЕсли "#Параметр(28)" = "Т.Ссылка"
		         И "#Параметр(27)" &lt;&gt; "Пользователи"
		         И "#Параметр(27)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(27)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(27)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(27),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(28)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(28)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(28))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	ЕСТЬNULL(#Параметр(28), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(29)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 9.
#Если "#Параметр(30)" = "" И "#Параметр(31)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(30)" = "Условие" Или "#Параметр(30)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(31) )
#ИначеЕсли "#Параметр(30)" = "ПравоЧтения" Или "#Параметр(30)" = "ПравоИзменения" #Тогда
	 #Параметр(31) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(31))
		#Если Не "#Параметр(30)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(30)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(30)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(31)
		#Если Не "#Параметр(30)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(30)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(31)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(31)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(30),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(30)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(30)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(30)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(30),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(31), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(30),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(30),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(31)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(30),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(31)
		#ИначеЕсли "#Параметр(31)" = "Т.Ссылка"
		         И "#Параметр(30)" &lt;&gt; "Пользователи"
		         И "#Параметр(30)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(30)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(30)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(30),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(31)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(31)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(31))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	ЕСТЬNULL(#Параметр(31), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(32)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 10.
#Если "#Параметр(33)" = "" И "#Параметр(34)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(33)" = "Условие" Или "#Параметр(33)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(34) )
#ИначеЕсли "#Параметр(33)" = "ПравоЧтения" Или "#Параметр(33)" = "ПравоИзменения" #Тогда
	 #Параметр(34) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(34))
		#Если Не "#Параметр(33)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(33)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(33)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(34)
		#Если Не "#Параметр(33)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(33)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(34)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(34)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(33),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(33)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(33)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(33)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(33),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(34), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(33),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(33),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(34)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(33),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(34)
		#ИначеЕсли "#Параметр(34)" = "Т.Ссылка"
		         И "#Параметр(33)" &lt;&gt; "Пользователи"
		         И "#Параметр(33)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(33)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(33)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(33),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(34)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(34)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(34))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	ЕСТЬNULL(#Параметр(34), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(35)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 11.
#Если "#Параметр(36)" = "" И "#Параметр(37)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(36)" = "Условие" Или "#Параметр(36)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(37) )
#ИначеЕсли "#Параметр(36)" = "ПравоЧтения" Или "#Параметр(36)" = "ПравоИзменения" #Тогда
	 #Параметр(37) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(37))
		#Если Не "#Параметр(36)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(36)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(36)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(37)
		#Если Не "#Параметр(36)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(36)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(37)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(37)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(36),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(36)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(36)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(36)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(36),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(37), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(36),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(36),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(37)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(36),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(37)
		#ИначеЕсли "#Параметр(37)" = "Т.Ссылка"
		         И "#Параметр(36)" &lt;&gt; "Пользователи"
		         И "#Параметр(36)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(36)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(36)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(36),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(37)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(37)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(37))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	ЕСТЬNULL(#Параметр(37), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(38)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 12.
#Если "#Параметр(39)" = "" И "#Параметр(40)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(39)" = "Условие" Или "#Параметр(39)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(40) )
#ИначеЕсли "#Параметр(39)" = "ПравоЧтения" Или "#Параметр(39)" = "ПравоИзменения" #Тогда
	 #Параметр(40) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(40))
		#Если Не "#Параметр(39)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(39)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(39)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(40)
		#Если Не "#Параметр(39)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(39)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(40)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(40)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(39),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(39)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(39)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(39)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(39),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(40), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(39),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(39),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(40)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(39),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(40)
		#ИначеЕсли "#Параметр(40)" = "Т.Ссылка"
		         И "#Параметр(39)" &lt;&gt; "Пользователи"
		         И "#Параметр(39)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(39)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(39)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(39),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(40)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(40)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(40))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	ЕСТЬNULL(#Параметр(40), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(41)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 13.
#Если "#Параметр(42)" = "" И "#Параметр(43)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(42)" = "Условие" Или "#Параметр(42)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(43) )
#ИначеЕсли "#Параметр(42)" = "ПравоЧтения" Или "#Параметр(42)" = "ПравоИзменения" #Тогда
	 #Параметр(43) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(43))
		#Если Не "#Параметр(42)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(42)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(42)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(43)
		#Если Не "#Параметр(42)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(42)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(43)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(43)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(42),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(42)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(42)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(42)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(42),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(43), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(42),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(42),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(43)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(42),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(43)
		#ИначеЕсли "#Параметр(43)" = "Т.Ссылка"
		         И "#Параметр(42)" &lt;&gt; "Пользователи"
		         И "#Параметр(42)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(42)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(42)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(42),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(43)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(43)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(43))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	ЕСТЬNULL(#Параметр(43), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(44)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 14.
#Если "#Параметр(45)" = "" И "#Параметр(46)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(45)" = "Условие" Или "#Параметр(45)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(46) )
#ИначеЕсли "#Параметр(45)" = "ПравоЧтения" Или "#Параметр(45)" = "ПравоИзменения" #Тогда
	 #Параметр(46) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(46))
		#Если Не "#Параметр(45)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(45)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(45)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(46)
		#Если Не "#Параметр(45)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(45)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(46)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(46)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(45),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(45)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(45)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(45)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(45),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(46), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(45),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(45),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(46)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(45),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(46)
		#ИначеЕсли "#Параметр(46)" = "Т.Ссылка"
		         И "#Параметр(45)" &lt;&gt; "Пользователи"
		         И "#Параметр(45)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(45)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(45)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(45),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(46)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(46)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(46))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	ЕСТЬNULL(#Параметр(46), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(47)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 15.
#Если "#Параметр(48)" = "" И "#Параметр(49)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(48)" = "Условие" Или "#Параметр(48)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(49) )
#ИначеЕсли "#Параметр(48)" = "ПравоЧтения" Или "#Параметр(48)" = "ПравоИзменения" #Тогда
	 #Параметр(49) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(49))
		#Если Не "#Параметр(48)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(48)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(48)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(49)
		#Если Не "#Параметр(48)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(48)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(49)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(49)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(48),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(48)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(48)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(48)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(48),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(49), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(48),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(48),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(49)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(48),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(49)
		#ИначеЕсли "#Параметр(49)" = "Т.Ссылка"
		         И "#Параметр(48)" &lt;&gt; "Пользователи"
		         И "#Параметр(48)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(48)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(48)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(48),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(49)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(49)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(49))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	ЕСТЬNULL(#Параметр(49), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(50)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

//// Проверка значения поля группы параметров 16.
#Если "#Параметр(51)" = "" И "#Параметр(52)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(51)" = "Условие" Или "#Параметр(51)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	 ( #Параметр(52) )
#ИначеЕсли "#Параметр(51)" = "ПравоЧтения" Или "#Параметр(51)" = "ПравоИзменения" #Тогда
	 #Параметр(52) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(#Параметр(52))
		#Если Не "#Параметр(51)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(51)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(51)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = #Параметр(52)
		#Если Не "#Параметр(51)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(51)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(52)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = #Параметр(52)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(51),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(51)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(51)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(51)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(51),") #Тогда
	
	 (
			ЕСТЬNULL(#Параметр(52), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(51),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(51),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = #Параметр(52)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(51),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = #Параметр(52)
		#ИначеЕсли "#Параметр(52)" = "Т.Ссылка"
		         И "#Параметр(51)" &lt;&gt; "Пользователи"
		         И "#Параметр(51)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(51)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(51)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(51),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = #Параметр(52)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = #Параметр(52)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(#Параметр(52))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	ЕСТЬNULL(#Параметр(52), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

	#Параметр(53)  // [)[)][)]...] [ИЛИ|И] [([(][(]...] оператор И/ИЛИ с/без скобок.

  )
)
#КонецЕсли

#КонецЕсли // Информационная база заблокирована для обновления.</condition>
	</restrictionTemplate>
	<restrictionTemplate>
		<name>ПоНаборамЗначений</name>
		<condition>// ПоНаборамЗначений(Таблица, -, Модификатор, ВладелецНаборов).
// № параметра:            1, 2,           3,               4.
// Читается так: "ограничение доступа по наборам значений".
// Параметры:
//     Таблица   - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг".
//     Модификатор - изменяет шаблон.
//                 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает
//                  безусловно выбирать группы иерархического справочника.
//                 2-й модификатор - строка "РасширенноеИЛИ" указывает для ограничений,
//                  например, "ПоОрганизациям или ПоУчетнымЗаписям" делать расширенную
//                  проверку, при которой вариант настройки вида доступа в группах доступа
//                  "Все разрешены, без запрещенных" считается, как "Вид доступа не используется".
//                  Если этого модификатора нет, тогда результат проверки Истина, что приводит
//                  к итоговому результату Истина, если "Все разрешены, без запрещенных"
//                  хотя бы по одному из видов доступа (либо ПоОрганизациям, либо ПоУчетнымЗаписям).
//                  Модификатор имеет смысл только при проверке наборов значений доступа.
//                  Можно использовать комбинации модификаторов: "НеОграничиватьДоступКГруппам",
//                  "РасширенноеИЛИ", "НеОграничиватьДоступКГруппам,РасширенноеИЛИ".
//                 Других модификаторов в этой версии шаблона не предусмотрено.
//     ВладелецНаборов - имя поля, содержащего ссылку на объект-владелец
//                 наборов значений доступа в регистре сведений НаборыЗначенийДоступа.
//                 Если имя поля не задано, считается, что проверяется сам объект-владелец
//                 наборов значений доступа, который имеет табличную часть &lt;Таблица&gt;.НаборыЗначенийДоступа.
//                 Эта табличная часть применяется, когда Право = "Изменение".
//                 Табличная часть точно такая, как РегистрСведений.НаборыЗначенийДоступа
//                 без измерения Объект и реквизитов.
//                 Для журналов документов нужно указать "Ссылка".
//
// Пример1: ПоНаборамЗначений("Документ.КорректировкаДенежныхСредств", "", "", "")
// Пример2: ПоНаборамЗначений("Документ.ПоступлениеТоваровИУслуг",     "", "", "")
// Пример3: ПоНаборамЗначений("ЖурналДокументов.СкладскиеДокументы",   "", "", "Ссылка")
// Пример4: ПоНаборамЗначений("Справочник.ВложенияЭлектронныхПисем",   "", "", "Владелец")

#Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется = "" #Тогда // Информационная база заблокирована для обновления.
    ГДЕ ЛОЖЬ

#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ПоНаборамЗначений18,") #Тогда
    Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 18 шаблона ограничения доступа ПоНаборамЗначений. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.

#Иначе

// Проверка правильности параметра Право.
#Если Не ("#Параметр(2)" = "Чтение"    Или "#Параметр(2)" = "Добавление" Или
          "#Параметр(2)" = "Изменение" Или "#Параметр(2)" = "Удаление"   Или "#Параметр(2)" = "")
      Или #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" И "#Параметр(2)"  = "Чтение"
      Или #ИмяТекущегоПраваДоступа  = "Чтение" И "#Параметр(2)" &lt;&gt; "Чтение" И "#Параметр(2)" &lt;&gt; "" #Тогда
    // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
    НеверноеПраво: #Параметр(2)
#КонецЕсли

// Проверка правильности параметра ИмяТаблицы.
#Если "#Параметр(1)" &lt;&gt; #ИмяТекущейТаблицы #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	НеверноеИмяТекущейТаблицы: "#Параметр(1)"
#КонецЕсли

// Проверка правильности параметра Модификатор.
#Если Не (    "#Параметр(3)" = "НеОграничиватьДоступКГруппам"
          Или "#Параметр(3)" = "РасширенноеИЛИ"
          Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ"
          Или "#Параметр(3)" = "") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	НеверныйМодификатор: #Параметр(3)
#КонецЕсли

// Общая проверка использования ограничений доступа на уровне записей.
#Если &amp;ОграничиватьДоступНаУровнеЗаписей #Тогда

Т ГДЕ // Т - псевдоним текущей таблицы (выбран коротким, чтобы сократить количество символов в тексте параметра-условия на языке запросов).

ИСТИНА В
(	// Проверка права пользователя на текущую таблицу в целом.
	// Права на таблицы формируются по составу ролей профиля группы доступа.
	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
	ИЗ
	#Если СтрСодержит(&amp;ТаблицыРасширенийСОграничениемДоступа, "|#Параметр(1);") #Тогда
		Справочник.ИдентификаторыОбъектовРасширений КАК СвойстваТекущейТаблицы
	#Иначе
		Справочник.ИдентификаторыОбъектовМетаданных КАК СвойстваТекущейТаблицы
	#КонецЕсли
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ГруппыДоступа КАК ГруппыДоступа
		ПО
			  СвойстваТекущейТаблицы.ПолноеИмя = "#Параметр(1)"
			И ИСТИНА В
			  (
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ
					РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступа
					ГДЕ
						  ТаблицыГруппДоступа.Таблица       = СвойстваТекущейТаблицы.Ссылка
						И ТаблицыГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка
					#Если #ИмяТекущегоПраваДоступа = "Изменение" #Тогда
						И ТаблицыГруппДоступа.ПравоИзменение
					#ИначеЕсли #ИмяТекущегоПраваДоступа = "Добавление" #Тогда
						И ТаблицыГруппДоступа.ПравоДобавление
					#КонецЕсли
			  )
			И ГруппыДоступа.Ссылка В
			  (
				ВЫБРАТЬ
					ГруппыДоступаПользователи.Ссылка КАК ГруппаДоступа
				ИЗ
					Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
					ПО
						  СоставыГруппПользователей.Пользователь = &amp;АвторизованныйПользователь
						И СоставыГруппПользователей.ГруппаПользователей = ГруппыДоступаПользователи.Пользователь
			  )
	ГДЕ

// Безусловная выборка групп в иерархическом объекте метаданных (если нужно).
#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
	Т.ЭтоГруппа Или
#КонецЕсли

#Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
 НЕ
 (
  ИСТИНА В // Не все проверки отключены.
  (
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора с не отключенной проверкой.
		#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
			ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
			#Если "#Параметр(4)" = "" #Тогда
				  НомераНаборов.Объект = Т.Ссылка
			#Иначе
				  НомераНаборов.Объект = Т.#Параметр(4)
			#КонецЕсли
		#Иначе
			ИЗ #Параметр(1).НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
				  НомераНаборов.Ссылка = Т.Ссылка
		#КонецЕсли
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				И НомераНаборов.Чтение
			#Иначе
				И НомераНаборов.Изменение
			#КонецЕсли
				И 
	ИСТИНА В // Не все проверки текущего набора отключены.
	(
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
	#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
		ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
		ГДЕ
		#Если "#Параметр(4)" = "" #Тогда
			  НаборыЗначений.Объект = Т.Ссылка
		#Иначе
			  НаборыЗначений.Объект = Т.#Параметр(4)
		#КонецЕсли
	#Иначе
		ИЗ #Параметр(1).НаборыЗначенийДоступа КАК НаборыЗначений
		ГДЕ
			  НаборыЗначений.Ссылка = Т.Ссылка
	#КонецЕсли
			И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
			И НЕ ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
					ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
					ГДЕ
						  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
				)
	)
  ) И НЕ
#Иначе
 (
#КонецЕсли
  ИСТИНА В
  (
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первого набора по которому доступ разрешен.
		#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
			ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
			#Если "#Параметр(4)" = "" #Тогда
				  НомераНаборов.Объект = Т.Ссылка
			#Иначе
				  НомераНаборов.Объект = Т.#Параметр(4)
			#КонецЕсли
		#Иначе
			ИЗ #Параметр(1).НаборыЗначенийДоступа КАК НомераНаборов
			ГДЕ
				  НомераНаборов.Ссылка = Т.Ссылка
		#КонецЕсли
			#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				И НомераНаборов.Чтение
			#Иначе
				И НомераНаборов.Изменение
			#КонецЕсли
				И
  #Если "#Параметр(3)" = "РасширенноеИЛИ" Или "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда
	ИСТИНА В // Не все проверки текущего набора отключены.
	(
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Выбор первой не отключенной проверки текущего набора.
	#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
		ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
		ГДЕ
		#Если "#Параметр(4)" = "" #Тогда
			  НаборыЗначений.Объект = Т.Ссылка
		#Иначе
			  НаборыЗначений.Объект = Т.#Параметр(4)
		#КонецЕсли
	#Иначе
		ИЗ #Параметр(1).НаборыЗначенийДоступа КАК НаборыЗначений
		ГДЕ
			  НаборыЗначений.Ссылка = Т.Ссылка
	#КонецЕсли
			И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
			И НЕ ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА // Поиск настроек ограничений доступа
					ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
					ГДЕ
						  ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						И ЗначенияПоУмолчанию.БезНастройки = ИСТИНА
				)
	) И
  #КонецЕсли
	НЕ ЛОЖЬ В // Все проверки успешны.
	(
		ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ // Выбор первого не разрешенного значения доступа.
	#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
		ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений
		ГДЕ
		#Если "#Параметр(4)" = "" #Тогда
			  НаборыЗначений.Объект = Т.Ссылка
		#Иначе
			  НаборыЗначений.Объект = Т.#Параметр(4)
		#КонецЕсли
	#Иначе
		ИЗ #Параметр(1).НаборыЗначенийДоступа КАК НаборыЗначений
		ГДЕ
			  НаборыЗначений.Ссылка = Т.Ссылка
	#КонецЕсли
			И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора
			И НЕ
			ВЫБОР
		#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
		  #Если Не &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
			КОГДА НаборыЗначений.ЗначениеБезГрупп
			ТОГДА
				ВЫБОР
				КОГДА ИСТИНА В
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ГДЕ
						  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
						И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
					)
				ТОГДА ИСТИНА
				ИНАЧЕ ЛОЖЬ
				КОНЕЦ
				=
				ВЫБОР
				КОГДА ИСТИНА В
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
					ГДЕ
					      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
					    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
					    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
					)
				ТОГДА ИСТИНА
				ИНАЧЕ ЛОЖЬ
				КОНЕЦ
		  #КонецЕсли
			КОГДА НаборыЗначений.СтандартноеЗначение
		#Иначе
			КОГДА
				ИСТИНА В
				(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
					ГДЕ
						ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
				)
		#КонецЕсли
		#Если &amp;ВидыДоступаСОтключеннымИспользованием = "Все" #Тогда
			ТОГДА
				ИСТИНА
		#Иначе
			ТОГДА
			#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
			  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
			  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
				ВЫБОР
			#КонецЕсли
			#Если Не #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
				КОГДА
					НЕ ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ Справочник.ИдентификаторыОбъектовМетаданных КАК ТипыСсылок
						ГДЕ
							  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
						)
					И НЕ ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ Справочник.ИдентификаторыОбъектовРасширений КАК ТипыСсылок
						ГДЕ
							  ТИПЗНАЧЕНИЯ(ТипыСсылок.ЗначениеПустойСсылки) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
							И ТипыСсылок.ЗначениеПустойСсылки В (&amp;ТипыЗначенийДоступаСГруппами)
						)
				ТОГДА
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
						ГДЕ
							  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
							И Значения.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
					=
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
						      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
			#КонецЕсли
			#Если Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
			  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
				КОГДА
					ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
						ГДЕ
							  ГруппыЗначенийДоступа.ЗначениеДоступа       = НаборыЗначений.ЗначениеДоступа
							И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
						)
				ТОГДА
					ИСТИНА
			#КонецЕсли
			#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
			  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
			  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
				ИНАЧЕ
			#КонецЕсли
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
						ПО
							  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
							И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
							И ГруппыЗначений.ЗначениеДоступа = НаборыЗначений.ЗначениеДоступа
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
					=
					ВЫБОР
					КОГДА ИСТИНА В
						(
						ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
						ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
						ГДЕ
						      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
						    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа)
						    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
						)
					ТОГДА ИСТИНА
					ИНАЧЕ ЛОЖЬ
					КОНЕЦ
			#Если Не #ИмяТекущегоПраваДоступа = "Чтение"
			  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")
			  Или Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") #Тогда
				КОНЕЦ
			#КонецЕсли
		#КонецЕсли
			// Проверка заведомого ложного или истинного однострочного набора значений.
			КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступРазрешен)
			ТОГДА ИСТИНА
			КОГДА НаборыЗначений.ЗначениеДоступа = ЗНАЧЕНИЕ(Перечисление.ДополнительныеЗначенияДоступа.ДоступЗапрещен)
			ТОГДА ЛОЖЬ
			// Проверка права доступа пользователя к таблице ЗначенияДоступа.
			КОГДА ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовМетаданных)
			  ИЛИ ТИПЗНАЧЕНИЯ(НаборыЗначений.ЗначениеДоступа) = ТИП(Справочник.ИдентификаторыОбъектовРасширений)
		#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
			// Право Чтение может зависеть только от права Чтение
			ТОГДА ИСТИНА В
				(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
					ГДЕ
						  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
						И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
				)
		#Иначе
			ТОГДА ИСТИНА В
				(	ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПраваНаОбъект
					ГДЕ
						  ТаблицыГруппДоступаПроверкаПраваНаОбъект.ГруппаДоступа = ГруппыДоступа.Ссылка
						И ТаблицыГруппДоступаПроверкаПраваНаОбъект.Таблица = НаборыЗначений.ЗначениеДоступа
						И НЕ(НаборыЗначений.Уточнение &lt;&gt; ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
								И ТаблицыГруппДоступаПроверкаПраваНаОбъект.ПравоИзменение = ЛОЖЬ)
				)
		#КонецЕсли
		#Если Не &amp;ТипыВладельцевНастроекПрав = "" #Тогда
			ИНАЧЕ
				(
				ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
							И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
						#Иначе
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
							И НастройкиПрав.Таблица = ВЫБОР
								КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
								ТОГДА НаборыЗначений.Уточнение
								ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
				И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
					(
					ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
					ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
						ПО
							  НаследованиеНастроек.Объект = НаборыЗначений.ЗначениеДоступа
							И НастройкиПрав.Объект        = НаследованиеНастроек.Родитель
						#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
						#Иначе
							И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
							И НастройкиПрав.Таблица = ВЫБОР
								КОГДА НаборыЗначений.Уточнение В (&amp;ИдентификаторыТаблицСОтдельнымиНастройкамиПрав)
								ТОГДА НаборыЗначений.Уточнение
								ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка) КОНЕЦ
						#КонецЕсли
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
						ПО
							  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
							И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
					)
				)
		#Иначе
			ИНАЧЕ
				ЛОЖЬ
		#КонецЕсли
			КОНЕЦ
	) // НЕ ЛОЖЬ В
  )
 )
)
#КонецЕсли

#КонецЕсли // Информационная база заблокирована для обновления.</condition>
	</restrictionTemplate>
</Rights>